Ajustes comunes
En las distintas páginas de listados hay varias opciones comunes en la esquina superior derecha:
-
Buscar: Buscar elementos en el listado actual
-
Filtrar: Filtrar los resultados
-
Exportar: Exportar listado en CSV
-
Nuevo: Añadir nuevo elemento
-
Registros por página:
Cambiar el nº de elementos por página
En la cabecera de la tabla si el título de la columna es clickable al pulsar se ordena en un sentido
y volviendo a pulsar se ordena en el sentido contrario.
Pulsando sobre el icono que tiene cada registro se despliegan
las distintas opciones (editar, borrar...).
Barra superior
Barra de búsqueda
Solo disponible para usuarios del rol Administrador
Se pueden buscar los siguientes elementos:
- Empleados: Por nombre, apellidos, email, teléfono o DNI
- Marcas: Por nombre
- Modelos: Por nombre
- Productos: Por nombre
- Clientes: Por nombre, apellidos, email, teléfono
- Pedidos: Por nº de pedido
- Servicios: Por nº de servicio
Botón llamar a Central
Solo disponible para usuarios del departamento Plazier
Botón para que los Plaziers llamen por teléfono a Central si hay alguna incidencia.
Botón enviar idea
Botón para comunicar alguna idea para mejorar el servicio.
Botón calcular presupuesto
Solo disponible para usuarios del departamento Central
Botón para abrir la página de calcular presupuesto de servicio.
Botón nuevo pedido/suscripción
Solo disponible para usuarios con permisos para gestionar pedidos
Desplegable para abrir la página de nuevo pedido o nueva suscripción.
Botón alertas
Botón para abrir la barra lateral donde el usuario puede gestionar sus Alertas y Favoritos.
Los usuario de Central también verán aquí el listado de notificaciones pendientes de revisar.
Barras laterales
Barra lateral izquierda
-
Datos de usuario:
-
Ajustes: Configuración general.
Solo disponible para usuarios con permisos para gestionar opciones
- Alertas: Mis alertas
-
Ausencias: Mis ausencias.
No disponible para usuarios del departamento Externos
- Cerrar sesión: Salir de la aplicación
- Botón de tamaño de menú: Botón para cambiar el tamaño de la barra lateral.
- Secciones: Lista de secciones
Barra lateral derecha
- Pendientes: Elementos pendientes de revisar
- Alertas: Mis alertas
- Favoritos: Mis favoritos
Ajustes
Solo disponible para usuarios con permisos para gestionar opciones
General
Configuración de los destinatarios de llamadas y correos, y del garaje de motos por defecto
que se usa para calcular las rutas en caso de que un Plazier no tenga otro garaje configurado.
El Modo debug es para mostrar errores de programación, solo se debe usar temporalmente para detectar fallos.
Mensajes
Los mensajes se envían automáticamente por WhatsApp a través de la API de 360 Dialog,
para elegir la plantilla que se envía en cada caso hay que introducir la clave key correspondiente.
En caso de que no se confirme el envío del WhatsApp se enviará el mensaje por SMS.
Se puede elegir que mensajes se envían de los 4 disponibles:
Inicio de ruta, Fin de ruta, Inicio de servicio y Fin de servicio.
Emails
Configuración del título y contenido de los correos que se envían automáticamente, se puede enviar una prueba
de cada uno de ellos para comprobar como llegarán al cliente.
Pagos
Configuración de los textos que aparecen en pantalla después de finalizar el proceso de pago,
se pueden previsualizar para comprobar como las verá el cliente.
Agenda
Configuración de los tiempos de espera y días festivos
Ausencias
Configuración de los tipos de ausencias y sus días correspondientes.
Alertas
Las alertas son avisos que se pueden añadir para que se genere un recordatorio,
cuando llega el día de la alerta aparece una notificación sobre el icono
de la barra superior, la notificación desaparece cuando se marca la alerta como finalizada.
Cada usuario solo verá sus alertas pero se pueden generar alertas para otros usuarios.
Ausencias
Disponible para usuarios que no sean del departamento Externos
Calendario de ausencias propias, en la parte superior están las vacaciones del año actual
y en la parte inferior está el listado de todas las solicitudes de ausencia enviadas en formato tabla y agenda.
Las solicitudes de ausencia nuevas se crean en estado Pendiente y deben ser confirmadas desde Central.
Dependiendo del tipo de ausencia la selección de fechas tendrá distintas opciones,
algunas ausencias ya tienen la duración asignada y solo hay que seleccionar el día inicial,
en otras (como las vacaciones) hay que seleccionar día inicial y día final.
Los usuarios de rol administrador pueden dar de alta ausencias de otros empleados.
El cálculo del nº de días de vacaciones es:
Días de alta en el año * Vacaciones anuales / Días del año
Personal
Solo disponible para usuarios con permisos para gestionar empleados
* El rol ETT tiene permisos pero solo podrá acceder a la vista de ocupación de sus Plaziers asociados
Usuarios:
Listado de usuarios con acceso a la aplicación. Para dar de baja un usuario tiene que ser archivado,
solo podrá ser archivado un usuario que no tenga un salario activo.
Un usuario archivado puede ser eliminado de la aplicación, pero si se elimina
se dejará de tener en cuenta a ese usuario para el cálculo de rentabilidad en fechas pasadas.
Las opciones de cada usuario dependen del departamento/rol:
- Dep. Central: Datos generales y ausencias
- Dep. Plazier: Datos generales, ausencias, ocupación, salarios, zonas, horario, vehículo y servicios
- Rol ETT: Datos generales, Plaziers asociados
- Rol Partner: Datos generales, comisiones, direcciones
Plaziers:
Listado de usuarios del departamento Plazier.
- Zonas: A la hora de calcular los huecos libres en agenda a cada Plazier solo se le asignarán servicios
cuyo código postal pertenezca a las Zonas principales que tenga seleccionadas.
Si no se encuentran Plaziers con la zona como principal se buscarán Plaziers que tengan esa Zona
secundaria (si la ruta no es mayor de 30 minutos). Si el Plazier pertenece a una franquicia
también se debe seleccionar en este apartado.
- Vehículo: Solo se agendarán servicios a un Plazier si tiene vehículo asignado,
si no se indica un garaje se usará el garaje configurado en los ajustes de la aplicación. También se debe indicar
cada cuantos servicios debe realizar limpieza de paños.
- Salarios: Los salarios tienen fecha inicial y fecha final, un salario sin fecha
final se considera un salario activo, a un Plazier se le pueden configurar distintos salarios pero solo puede tener uno activo.
No se puede dar de baja un Plazier que tenga un salario activo,
será necesario finalizar primero el salario para darlo de baja.
- Horario: Solo se agendarán servicios a un Plazier dentro del rango horario de los días seleccionados,
para cada día se puede configurar que el calculador ofrezca el primer/último hueco o ambos.
- Servicios: Los servicios seleccionados NO SERÁN REALIZADOS por el Plazier.
Importante
Un salario no se puede modificar, cuando se edita un salario realmente se crea uno nuevo a partir de la fecha indicada
y se finaliza el anterior.
Partners:
Listado de usuarios con el rol Partner, en la tabla se muestran los datos de comisiones de cada usuario
en el rango de fechas seleccionado.
En la configuración de cada Partner se debe indicar la Comisión y añadir las
Direcciones que luego se podrán seleccionar en los servicios,
el Partner se llevará ese porcentaje de comisión en los servicios que se hagan en sus instalaciones.
Al abrir los detalles de las comisiones de un Partner se mostrará el total de comisiones,
el listado de servicios y los pagos realizados.
Departamentos:
Listado de departamentos.
Roles:
Listado de roles. A cada rol se le pueden asignar permisos para que tenga acceso solo a determinadas secciones.
Noticias:
Listado de noticias. Las noticias son para mostrar en la App de los Plaziers.
Ideas:
En la parte superior se muestra el total de ideas recibidas, el total de ideas aprobadas y el total de ideas rechazadas,
en la parte inferior está el listado de las ideas enviadas por los Plaziers, que se pueden filtrar por Plazier, Estado y fecha.
Pulsando sobre una de las ideas se puede marcar como Aprobada/Denegada y dejar un comentario que verá el Plazier.
Rentabilidad:
Resumen de la rentabilidad y ocupación de los Plaziers en el rango de fechas seleccionado.
Pulsando sobre alguna de las filas se abren los detalles de ocupación del Plazier correspondiente.
En los botones +info se despliega la información detallada
de cómo se calculan los datos.
Ausencias:
En la tabla superior se verán por defecto las ausencias pendientes de confirmación de todos los empleados
(se puede marcar la casilla Pendientes + Confirmadas para ver todas), haciendo click sobre alguna de las filas se abren
las ausencias del empleado correspondiente.
Las ausencias pendientes se pueden Aprobar desde el menú desplegable o pulsando sobre el icono .
Una vez aprobada la ausencia, si hay servicios afectados estos quedarán marcados en gris en la agenda, y en la página de Inicio
aparecerán en la parte superior con un botón de Enviar avisos, pulsando este botón se cancelarán los servicios afectados
y se enviará un WhatsApp de aviso a los clientes.
En el calendario de la parte inferior se verán las ausencias ya confirmadas, se pueden filtrar por empleado
pulsando sobre el icono de la cara que hay en la esquina superior derecha.
Horarios:
Tabla de las agendas de cada Plazier, indicando los días disponibles y los horarios.
Fichajes:
Listado de fichajes de los Plaziers y resumen de las horas pendientes.
Gmail/Firma:
Herramienta para generar la firma de correo corporativa de Plazy.
Se incluyen también tutoriales para configurar el correo en Gmail.
Registros:
Solo disponible para usuarios con permisos para gestionar registros
Listado de los registros de actividad guardados en la base de datos.
Configuración
Modelos:
Solo disponible para usuarios con permisos para gestionar vehículos
- Modelos: Listado de modelos, cada modelo está asociado a una marca y tamaño
- Marcas: Listado de marcas
- Tamaños: Listado de tamaños
- Tabla de tamaños: Tabla de vehículos y tamaños
- Colores: Listado de colores
Zonas:
Solo disponible para usuarios con permisos para gestionar zonas
- Zonas: Listado de zonas
- Ciudades: Listado de ciudades
- CPS: Listado de códigos postales, cada CP está asociado a una zona y ciudad
Productos:
Solo disponible para usuarios con permisos para gestionar servicios
-
Productos: Listado de servicios,
el icono indica que el servicio se muestra en la web y
el icono indica que el servicio no cuenta para el % de ocupación
- Tipo: Si es un Servicio o Complemento
- Nombre: Nombre del servicio
- Nombre interno: Nombre que se muestra en la aplicación
- Nombre web: Nombre que se muestra en la web
- Descripción: Descripción corta que se muestra en la web
- Descripción larga: Descripción larga que se muestra en la web
-
Tipo de precio:
Simple (un único precio/tiempo) o Variable (el precio/tiempo depende del tamaño del vehículo)
- Disponible en la web: (solo servicios) Si el servicio se muestra en la web o no
- No contar para ocupación: (solo servicios) Si se marca el servicio no cuenta para el % de ocupación
- Orden: (solo servicios) Para elegir el orden en que se muestran los servicios en la web
-
Complementos:
(solo servicios) Listado de complementos, hay que indicar si están disponibles y si se muestran en la web
- Múltiple: (solo complementos) Para permitir seleccionar más de uno por servicio
- Tablas de precios: Para actualizar los precios de cada servicio/tamaño
- Tablas de tiempos: Para actualizar los tiempos de cada servicio/tamaño
- Tablas de códigos: Los códigos se generan automáticamente
- Complementos web: Tabla para configurar que complementos se muestran en la web
Packs:
Solo disponible para usuarios con permisos para gestionar servicios
Listado de packs disponibles para suscripciones.
- Nombre: Nombre del pack
- Nombre interno: Nombre que se muestra en la aplicación
- Nombre web: Nombre que se muestra en la web
- Servicios: Nº de servicios que incluye el pack
- Meses: Nº de meses para realizar todos los servicios
- Descuento: Descuento para pago en cuotas
- Dto. pronto pago: Descuento adicional para pago único
- Ordenable: Si el usuario puede ordenar los servicios (en caso de que no sean todos iguales)
- Descripción: Descripción del pack
-
Combinaciones: Combinaciones de servicios disponibles,
se puede configurar el orden por defecto de los servicios,
a la hora de dar de alta la suscripción este orden se podrá personalizar
Soluciones:
Solo disponible para usuarios con permisos para gestionar servicios
Listado de opciones para la ayuda de selección de servicio.
- Nombre: Nombre del tipo de suciedad
- Categoría: Limipeza interna o externa
- Icono: Icono de fontawesome
- Orden: Orden para listar en la web
- Opciones: 3 opciones de limpieza
ITV:
Solo disponible para usuarios con permisos para gestionar servicios
Configuración para los servicios de ITV.
- Precios: Configuración de precio según el combustible
- Estaciones: Direcciones de las estaciones disponibles
Promociones
Cupones:
Solo disponible para usuarios con permisos para gestionar cupones
Listado de cupones de descuento.
Los cupones con fecha ya caducada o con el nº máximo de usos superado se muestran en color rojo.
- Código: Código del cupón, será lo que tendrá que indicar el cliente para usarlo
- Descuento: Cantidad de descuento
- Tipo: Si es un descuento en € o en %
- Fecha límite: Hasta que fecha se puede usar el cupón
- Cliente: Si es para un usuario concreto o para todos
- Máximo de usos totales: Cuantas veces se puede usar el cupón (0 para ilimitadas)
- Máximo de usos por usuario: Cuantas veces puede usar el cupón un usuario (0 para ilimitadas)
- Plazier asociado: Plazier asociado que se llevará una comisión
- Solo válido en primer servicio: Solo válido en primer servicio
- Descripción: Descripción del cupón
Invitaciones:
Solo disponible para usuarios con permisos para gestionar personal
Listado de invitaciones y cupones que dan comisión a los Plaziers.
Las invitaciones de registro se envían por mail, si el cliente se registra desde el enlace que recibe
tiene un descuento del 35% en su primer pedido y proporciona al Plazier una comisión del 10% del importe neto del pedido.
Los cupones los puede enviar el Plazier por WhatsApp pero también se pueden dar al cliente por cualquier otro medio
(promociones en redes por ejemplo), cuando un cliente usa un cupón asociado a un Plazier proporciona al Plazier una comisión
del 10% del importe neto del pedido.
Recompensas:
Solo disponible para usuarios con permisos para gestionar cupones
Listado de recompensas activas en el área de usuario. Es un listado informativo, la gestión de promociones se hace de manera manual.
Clientes
Solo disponible para usuarios con permisos para gestionar clientes
Clientes
Listado de clientes particulares, los iconos de las columnas Web
y News indican si el cliente está registrado en la web
y si está suscrito a las newsletters.
En la pantalla de edición de cliente se pueden modificar sus datos y se pueden consultar sus vehículos, direcciones
y pedidos. También se puede generar el cupón de descuento correspondiente a la reseña en Google.
Clientes B2B
Listado de clientes B2B.
Vehículos
Listado de vehículos de los clientes.
Direcciones de servicio
Listado de direcciones de servicio de los clientes. Se puede acceder al listado de Direcciones no válidas
para consultar las direcciones no válidas introducidas por los usuarios en la web, y también un resumen agrupado por CP.
Importante
Para que el cálculo de las rutas se haga bien es imprescindible que la dirección se seleccione
de entre las opciones ofrecidas por Google Maps.
Direcciones de facturación
Listado de direcciones de facturación de los clientes.
Pedidos
Solo disponible para usuarios con permisos para gestionar pedidos
Listado de pedidos
En las últimas columnas del listado se indica si el pedido se hizo desde la web
y si tiene factura asociada
o si pertenece a una suscripción .
Listado de pedidos archivados
Son datos de pedidos web que se eliminan automáticamente, para que no queden huecos pendientes de pago ocupando la agenda
si el usuario tarda más de 15 minutos en finalizar una reserva (desde la web)
el pedido se elimina y se envía un mail al cliente.
Nuevo pedido
Se puede asociar a un cliente existente seleccionándolo en el desplegable
o crear un nuevo cliente seleccionando la opción Nuevo cliente.
Importante
Al seleccionar un cliente existente se cargan automáticamente sus datos,
si se modifican esos datos al guardar el pedido se actualizará la ficha del cliente.
Nueva factura múltiple
Desde esta opción se puede generar una factura seleccionando varios pedidos de un mismo cliente.
Modificar pedido
Cliente
Se puede cambiar el cliente asociado por un cliente existente (seleccionándolo en el desplegable)
o por un cliente nuevo (seleccionando Nuevo cliente en el desplegable o pulsando el botón Nuevo cliente).
Los datos de cliente aparecen bloqueados por defecto, para actualizarlos hay que pulsar en el botón Actualizar,
si se modifican esos datos al guardar el pedido se actualizará la ficha del cliente.
Datos de facturación
Marcando la casilla Añadir datos de facturación se mostrarán los campos para añadir la dirección de
facturación, se puede elegir una dirección existente en el desplegable o seleccionar Nueva dirección para crear
una nueva.
Después de añadir la dirección de facturación y guardar el pedido se mostrará el botón de
Generar factura.
Cuando un pedido tiene factura asociada se pueden configurar algunas opciones:.
- Se puede actualizar la fecha de la factura
- Se puede mostrar/ocultar la matrícula del vehículo
- Se puede mostrar/ocultar la línea de descuentos
- Se puede generar una factura rectificativa
Importante
Si se selecciona una dirección existente y se modifican los datos
al guardar el pedido se actualizará la ficha de la dirección.
Comentario de pedido
Son las observaciones del pedido, se mostrarán en la factura.
Servicios
Lista de servicios asociados al pedido.
-
No se pueden añadir servicios a pedidos finalizados o cancelados ni a pedidos de una suscripción.
-
No se pueden editar servicios ya iniciados.
-
No se puede borrar un servicio en curso ni de suscripción.
Total
Importe total del pedido y configuración del modo de pago y el estado de pedido.
Para poder seleccionar un modo de pago es necesario que el pedido tenga algún servicio asociado,
y para poder asignar un estado de pedido debe haber un modo de pago seleccionado.
El estado por defecto de un pedido es Pendiente de configuración, después de añadir algún servicio
y seleccionar el modo de pago se marca por defecto como Pendiente de pago, se puede actualizar
manualmente el estado del pedido pero también cambiará automáticamente en los siguientes casos:
-
Cuando se hace un pago con tarjeta el pedido cambia a estado En Agenda
-
Cuando se termina el último servicio de un pedido el pedido cambia a estado Finalizado
El campo fecha de pago indica el momento en el que se confirma el pago del pedido, en los pagos con tarjeta
este campo se cubre automáticamente, en los pagos en efectivo o por transferencia hay que añadirlo manualmente.
Debajo se muestra una tabla con el histórico de estados de pedido,
cuando el cambio de estado de pedido conlleva el envío de un correo electrónico se indica el email al que se envió.
En caso de que el pedido esté en estado Pendiente de pago hay un botón
para enviar un mensaje al móvil del cliente con el enlace de pago con tarjeta.
Suscripciones
Solo disponible para usuarios con permisos para gestionar pedidos
Listado de suscripciones
En la última columna del listado se indica si el pedido se hizo desde la web .
Nueva suscripción
Cliente
Se puede asociar a un cliente existente seleccionándolo en el desplegable
o crear un nuevo cliente seleccionando la opción Nuevo cliente.
Importante
Al seleccionar un cliente existente se cargan automáticamente sus datos,
si se modifican esos datos al guardar el pedido se actualizará la ficha del cliente.
Vehículo
Se puede asociar a un vehículo existente seleccionándolo en el desplegable
o crear un nuevo vehículo seleccionando la opción Nuevo vehículo.
Importante
Al seleccionar un vehículo existente se cargan automáticamente sus datos,
si se modifican esos datos al guardar la suscripción se actualizará la ficha del vehículo.
Pack
Para seleccionar un Pack es necesario que esté seleccionado el Cliente y el Vehículo,
ya que su importe dependerá de la tarifa del cliente y el tamaño del coche.
Si el tipo de suscripción es mensual solo se puede hacer el pago con tarjeta,
en caso de ser pago único puede ser con cualquier modo de pago como un pedido normal.
El orden por defecto de los servicios se puede modificar arrastrando y soltando.
Importante
Al cambiar de tipo de suscripción se restablece el orden por defecto de los servicios.
Dirección
Se puede asociar a una dirección existente seleccionándola en el desplegable
o crear una nueva dirección seleccionando la opción Nueva dirección.
Se usará la misma dirección para todos los servicios de la suscripción,
se enviará un aviso al cliente antes de cada servicio para que la confirme.
Importante
Al seleccionar una dirección existente se cargan automáticamente sus datos,
si se modifican esos datos al guardar la suscripción se actualizará la ficha de la dirección.
Importante
Para que el cálculo de las rutas se haga bien es imprescindible que la dirección se seleccione
de entre las opciones ofrecidas por Google Maps.
Calcular ruta del primer servicio
Indicando el día inicial y el horario se ofrecerán los huecos disponibles en la agenda,
los siguientes servicios se programarán automáticamente
según la periodicidad del pack seleccionado,
se enviará un aviso al cliente antes de cada servicio para que confirme la fecha y hora.
Agenda del primer servicio
Se puede agendar manualmente el primer servicio en vez de usar la calculadora de ruta,
en este caso hay que seleccionar manualmente Plazier, fecha y hora, también se puede indicar al Plazier
si el cliente acepta que el servicio empiece antes de la hora.
Comentarios
Las indicaciones para el Plazier, se asociarán a cada una de los servicios de la suscripción,
más adelante el cliente podrá actualizar los comentarios de cada servicio desde su área de cliente.
Modificar suscripción
En la parte superior se muestra la información de la suscripción: Cliente, Pack, Vehículo y Precios.
Estado
El estado por defecto de una suscripción es Pendiente de pago,
luego el estado de la suscripción se puede cambiar manualmente,
pero también cambiará automáticamente en los siguientes casos:
-
Cuando se hace un pago con tarjeta la suscripción cambia a estado En Agenda
-
Cuando se termina el último servicio de la suscripción cambia a estado Finalizado
Las suscripciones se pueden pausar, a los servicios pendientes de la suscripción se les borrará la fecha
y el plazier asociado y a las cuotas pendientes se les borrará la fecha de pago. En el momento que se reactive la suscripción
se reubicarán los servicios pendientes (el primero 8 días después de la fecha de reactivación) y los pagos pendientes
(el primero un día después de la reactivación).
Debajo se muestra una tabla con el histórico de estados de la suscripción,
cuando el cambio de estado de la suscripción conlleva el envío de un correo electrónico se indica
el email al que se envió. En caso de que la suscripción esté en estado Pendiente de pago hay un botón
para enviar un mensaje al móvil del cliente con el enlace de pago con tarjeta.
Datos de facturación
Marcando la casilla Añadir datos de facturación se mostrarán los campos para añadir la dirección de
facturación, se puede elegir una dirección existente en el desplegable o seleccionar Nueva dirección para crear
una nueva.
Después de añadir la dirección de facturación y guardar la suscripción se podrá Generar factura
para cada una de las cuotas de la suscripción.
Cuando una cuota tiene factura asociada se pueden configurar algunas opciones:.
- Se puede actualizar la fecha de la factura
- Se puede actualizar las observaciones de la factura
- Se puede mostrar/ocultar la matrícula del vehículo
- Se puede generar una factura rectificativa
Importante
Si se selecciona una dirección existente y se modifican los datos
al guardar la suscripción se actualizará la ficha de la dirección.
Cuotas
Según el tipo de suscripción los pagos serán en 1 cuota o varias, en el listado se muestran
las cuotas con su imorte, el estado y la fecha programada para el pago.
Servicios
Lista de servicios asociados al pedido.
-
No se pueden añadir servicios a una suscripción.
-
No se pueden editar servicios ya iniciados, y en los servicios sin iniciar no se puede
modificar cliente, vehículo ni servicios.
-
No se puede borrar un servicio de una suscripción.
Servicios
Solo disponible para usuarios con permisos para gestionar pedidos
* Los usuarios del departamento Plazier podrán acceder a la Vista de sus servicios asignados
Listado de servicios
En la primera columna se muestra la previsión meteorológica para el día/dirección del servicio,
esta previsión solo alcanza a una semana vista, para servicios a partir de esa fecha la previsión no estará disponible.
Si el servicio fue generado como una incidencia de otro en la columna de Nº se mostrará en rojo el Nº de origen.
En las últimas columnas hay varios iconos:
-
Si el servicio tiene incidencias
-
Si el servicio se reservó desde la web
-
Si el servicio se reservó desde una empresa externa
-
Si el servicio pertenece a una suscripción enlazará con los detalles
-
Indica si el Plazier adjuntó fotos
-
Indica que el informe de final de servicio está pendiente de recibir
-
Indica que el informe de final de servicio está recibido
-
Indica que el informe de final de servicio está finalizado
Nuevo servicio
No se puede añadir un nuevo servicio de manera independiente,
los servicio deben pertenecer a un pedido y se añaden desde la página de pedido.
Cliente
Por defecto el servicio estará asociado al mismo cliente del pedido, se puede cambiar por un cliente existente
(seleccionándolo en el desplegable) o por un cliente nuevo
(seleccionando Nuevo cliente en el desplegable o pulsando el botón Nuevo cliente).
Los datos de cliente aparecen bloqueados por defecto, para actualizarlos hay que pulsar en el botón Actualizar.
Importante
Al seleccionar un cliente existente se cargan automáticamente sus datos,
si se modifican esos datos al guardar el pedido se actualizará la ficha del cliente.
Vehículo
Se puede asociar a un vehículo existente seleccionándolo en el desplegable
o crear un nuevo vehículo seleccionando la opción Nuevo vehículo.
Importante
Al seleccionar un vehículo existente se cargan automáticamente sus datos,
si se modifican esos datos al guardar la suscripción se actualizará la ficha del vehículo.
Dirección
Se puede asociar a una dirección existente seleccionándola en el desplegable
o crear una nueva dirección seleccionando la opción Nueva dirección.
Importante
Al seleccionar una dirección existente se cargan automáticamente sus datos,
si se modifican esos datos al guardar la suscripción se actualizará la ficha de la dirección.
Importante
Para que el cálculo de las rutas se haga bien es imprescindible que la dirección se seleccione
de entre las opciones ofrecidas por Google Maps.
Tipo de servicio
Para seleccionar un Tipo de servicio es necesario que esté seleccionado el Vehículo.
Una vez seleccionado el servicio se mostrarán los complementos disponibles.
Total
Es el resumen de tiempo e importe según el servicio y complementos seleccionados, se puede añadir un cupón de descuento
y también se muestra debajo del precio la tarifa que se le aplica al cliente.
Calcular ruta
Indicando el día inicial y el horario se ofrecerán los huecos disponibles en la agenda.
Agenda
Se puede agendar manualmente el servicio en vez de usar la calculadora de ruta,
en este caso hay que seleccionar manualmente Plazier, fecha y hora, también se puede indicar
si el cliente acepta que el servicio empiece antes de la hora acordada (si es posible).
Comentarios
Las indicaciones para el Plazier.
Modificar servicio
Están disponibles todas las opciones de Nuevo servicio, a mayores se puede:
- Ver si el servicio surge como incidencia de otro
- Ver si el servicio tiene incidencias
- Modificar los tiempos de servicio
- Ver los mensajes que se han enviado y enviar un SMS al cliente
Vista de servicio
La pantalla de Vista de servicio muestra toda la información del servicio: Servicios, Plazier, Fecha y hora,
Tiempos de servicio, Cliente, Vehículo, Dirección, Comentarios y Mensajes enviados.
Si el servicio incluye incidencias se muestan en una tabla, y si el servicio se originó como incidencia de otro se indica
el servicio original y se muestran las fotos del servicio original.
En caso de que el cliente acepte que el servicio se pueda empezar antes de tiempo aparecerá un aviso en la parte superior.
Si el servicio está sin finalizar en la parte superior se mostrará un botón grande
que sirve para gestionar el progreso de servicio, pulsando el botón se cambiará de:
- En agenda > En ruta
- En ruta > En espera
- En espera > Inicio de servicio
- Inicio de servicio > Fin de servicio
- Fin de servicio > Fin de servicio
Durante los pasos 1 y 2
El Plazier tiene un botón para avisar al cliente del servicio de que llegará tarde.
Durante el paso 3
Si pasan 10 minutos de espera el Plazier podrá llamar al cliente
Si no localiza al cliente tiene un botón para enviar un WhatsApp al cliente de que se esperarán 10 minutos más.
A los 20 minutos se mostrará un botón para cancelar el servicio.
Durante el paso 4
El Plazier tiene un botón para avisar al cliente del siguiente servicio de que llegará tarde.
También tiene un botón para cancelar el servicio si: empieza a llover, si lo pide el cliente, oros motivos.
Durante el paso 5
El Plazier podrá llamar al cliente.
Cuando el servicio está finalizado el Plazier podrá adjuntar fotos y cubrir el informe final de servicio,
la última parte del informe se completará cuando el cliente envíe el formulario de satisfacción, desde donde puede añadir fotos.
Importante
Una vez que el Plazier envía el informe final de servicio no lo podrá modificar,
solo podrá ser modificado desde Central.
Galería de fotos
Listado de todas las fotos de servicios subidas por los Plaziers y los clientes.
Calcular
Sección para simular los datos de un servicio y poder comprobar el importe y los huecos disponibles.
Agenda
Solo disponible para usuarios con permisos para gestionar la agenda
Calendario de servicios, se pueden visualizar en formato Mes (por defecto para Central),
en formato Semana o en formato Lista (por defecto para Plaziers).
Los usuarios del departamento Plazier verán solo sus servicios y los usuarios del departamento Central verán todos
los servicios, pero pueden filtrar los servicios por Plazier
en el icono de la cara de la esquina superior derecha.
Los colores de cada servicio indican el estado:
- Gris: Pendiente de configurar o Plazier de baja
- Amarillo: Pendiente de pago
- Azul: En agenda
- Verde: Finalizado
- Rojo: Plazier no disponible
- Negro: Servicio cancelado/aplazado
- Parpadeando: En curso
Al situar el ratón sobre un servicio se abrirá una ventana con la información principal del servicio,
y haciendo click en el servicio se abre la página de Vista de servicio.
En móvil la ventana con la información principal se muestra al pulsar encima del servicio y
dentro de la ventana aparecerá un botón para abrir la Vista de servicio.
Si la reserva se hizo desde la web se indica con el icono .
Vista mensual
La parte superior de cada día muestra el porcentaje de ocupación
del día (entre paréntesis el nº de Plaziers activos ese día) y debajo la rentabilidad del día.
Cuando la ocupación del día es inferior al 80% se muestra en rojo,
entre el 80% y el 101% se muestra en verde
y más del 101% se muestra en negro.
La rentabilidad se muestra en rojo si es negativa
y en verde si es positiva.
Haciendo click sobre el número de día se abre una ventana con los
detalles de rentabilidad y ocupación del día.
En el lateral izquierdo de cada semana se muestra el porcentaje de ocupación de la semana.
Cuando la ocupación de la semana es inferior al 80% se muestra en rojo,
entre el 80% y el 101% se muestra en verde
y más del 101% se muestra en negro.
Haciendo click sobre la barra de ocupación semanal se abre una ventana con los
detalles de ocupación de la semana.
Facturas
Solo disponible para usuarios con permisos para gestionar facturas
Es el listado de facturas generadas desde los pedidos y suscripciones,
las facturas rectificativas se muestran en color rojo.
En la parte superior se indica cual es el nº que se asignará a la siguiente factura,
pulsando sobre se puede aumentar el nº de la siguiente factura manualmente.
Pulsando sobre una factura se abre una nueva ventana con la factura en formato PDF para poder descargar.
Material
Solo disponible para usuarios con permisos para gestionar material
* Los usuarios del departamento Plazier podrán acceder a la lista de su stock
Es la gestión del material de trabajo.
Material
Gestión de los materiales, cada material tiene cantidad mínima (cuando un vehículo llega a esa cantidad se avisa de stock bajo)
y cantidad recomendada (es la cantidad que debería haber en el vehículo cuando se cargue).
Vehículos
Es el listado de vehículos disponibles.
Almacenes
Es el listado de almacenes, en los almacenes se guarda el stock de materiales desde el que se rrecargarán los vehículos.
Stock
Es el stock de cada material en cada vehículo, para recargar el stock hay que seleccionar
el almacén de origen en la esquina superior derecha.
Cuando se ha seleccionado un almacén aparecerá una primera columna indicando
el stock de material en el almacén, si el stock no es suficiente para llenar todos los vehículos hasta su cantidad recomendada
aparecerá debajo y en rojo la cantidad que se debe comprar.
Según se van añadiendo unidades a los vehículos se descuentan del almacén, cuando el stock de un material
es bajo se muestra en rojo, cuando el stock de un material es el recomendado se muestra en verde.
Al acabar de recargar el stock hay que pulsar el botón Guardar.
Informes
Solo disponible para usuarios con permisos para gestionar informes
* Los usuarios del departamento Plazier podrán acceder a los informes de Final de servicio de sus servicios
KPIs dirección
Informe de los KPIs de dirección filtrados por fechas y franquicia.
La gráficas muestra los datos seleccionados en la tabla inferior.
Nota de desempeño
En la parte superior hay un gráfico que muestra la nota media de desempeño mensual en el rango de fechas seleccionado.
En los informes de servicio antiguos el Plazier cubría la información del servicio y en Central se cubría la valoración,
estos informes tenían 3 estados: Pendiente (el Plazier aún no envió el informe),
Recibido (el Plazier envió el informe) y
Finalizado (Central completó el informe).
En los informes de servicio nuevos el Plazier cubre la información del servicio y la valoración la envía el cliente
si cubre el formulario de satisfacción, estos informes tienen 2 estados:
Nota Plazier (el cliente no envió el formulario de satisfacción) y
Nota cliente (el cliente envió el formulario de satisfacción).
Si el cliente envía el formulario el cálculo se hace según los siguientes factores:
- Nota de valoración (49%) * 0.49
- Puntualidad (10,5%) + 0,525
- Nota de atención (10,5%) * 0.105
- Diferencia de tiempo de servicio (21%)
- Negativa o entre 0 y 5% + 1,05
- Entre 5% y 10% + 0,735
- Entre 10% y 20% + 0,525
- Más del 20% + 0
- Informe de plazier (6%) + 0,3
- Fotos añadidas (3%) + 0,15
Si la diferencia es un -5% (o menos) y tiene una valoración de 4 (o menos) se le baja la nota a 1 automáticamente
Si el cliente no envía el formulario el cálculo se hace según los siguientes factores:
- Diferencia de tiempo de servicio (70%)
- Negativa o entre 0 y 5% + 3,5
- Entre 5% y 10% + 2,45
- Entre 10% y 20% + 1,75
- Más del 20% + 0
- Informe de plazier (20%) + 1
- Fotos añadidas (10%) + 0,5
Facturación comercial
Listado de servicios creados en el rango de fechas seleccionado y su importe,
por defecto aparecerán los pedidos del último año.
Las gráficas comparan los datos entre Central, Web, Empresas y Partners.
Facturación operativa
Informe de rentabilidad en base al coste por Plazier/día y la facturación/día
Facturación real
Listado de pedidos pagados en el rango de fechas seleccionado y su importe,
por defecto aparecerán los pedidos del último año.
Incidencias
Informe de incidencias, muestra el gráfico de incidencias por mes en el rango seleccionado
y el listado de incidencias. Se puede filtrar por Plazier, Franquicia y por rango de fechas.
Cupones
Informe de uso de cupones, muestra el gráfico con el uso mensual de los cupones más comunes
y el listado de servicios con cupón. Se puede filtrar por Plazier, cupón y por rango de fechas.
Invitaciones
Informe de invitaciones, muestra el gráfico y listado de invitaciones enviadas por mes en el rango seleccionado.
Material
Informe de gastos de material, muestra una tabla con el gasto total de cada producto por Paxter,
el nº de servicios y el gasto por servicio en el rango seleccionado.
Ocupación
Comparativa entre la ocupación estimada y real en el rango seleccionado,
por defecto aparecerán los pedidos del último año.
Registro de clientes
Listado de clientes registrados en el rango de fechas seleccionado,
por defecto aparecerán los registros del último año.
La gráfica comparan los datos entre Central y Web.
Reseñas
Lista de las reseñas enviadas por los clientes, si la reseña incluye comentario hay que pulsar en el icono
para leerlo. Se puede añadir un comentario adicional si es necesario.
Si el cliente adjuntó fotos al formulario aparecerá marcado el icono .
La línea aparece destacada hasta que se marque la reseña como resuelta pulsando el icono .
En el resumen de la parte superior se indica el número de encuestas enviadas, las que se han recibido y la nota media de valoración
de las que se han recibido.
También se muestra el porcentaje de posibilidad de recomendación por parte de los clientes, una nota de 6 o menos es negativa,
de 7 u 8 es neutra y de 9 o 10 es positiva.
Retrasos
Comparativa entre los tiempos estimados y reales de los servicios ya finalizados.
En la gráfica se muestra la diferencia media de cada mes en el rango seleccionado.
Servicios
Listado de servicios reservados en un rango de fechas ordenados por número de reservas.
En la gráfica se muestra el total de servicios y se pueden cargar hasta 5 servicios adicionales.
Tiempos por servicio
Comparativa entre el tiempo objetivo de cada servicio y el tiempo medio real de los servicios ya finalizados.
En el icono de la esquina superior izquierda se pueden seleccionar
qué servicios mostrar en el informe.
Tiempos globales
Gráfica y listado de tiempos medios de servicio, ruta y espera.
Premios
Solo disponible para usuarios del departamento Central
Clasificaciones de la puntuación de los Plaziers:
- La clasificación mensual en el momento actual
- La clasificación anual hasta el mes pasado
- La clasificación total hasta el mes pasado
Para elegir mes y año hay un desplegable en la esquina superior derecha en el bloque correspondiente.
Las puntuaciones anual y total se actualizan el día 1 de cada mes a las 00:00, se actualizan las de los 2 últimos meses
para contabilizar la nota de desempeño si faltaban encuestas de satisfacción por enviar.
Se puede ver también la vista de Plazier, en formato gráfico.
Puntos mensuales |
Servicio realizado |
1km |
Invitaciones confirmadas |
20 km |
Ideas implantadas |
10 km |
Incidencias |
-30 km |
Desempeño individual >= 4.8 |
20 km |
Desempeño global >= 4.8 |
30 km |
Tareas CRON de recordatorios
cron_alerts.php
/**
* Enviar avisos
* Se ejecuta el archivo desde una tarea CRON todos los días a las 11:00
* Description:
* - Aviso por email y whatsapp 1 semana antes del servicio
* - Aviso por email y whatsappp 1 día antes del servicio
* - Ofrecer ayuda por whatsapp a usuarios registrados en la web el día anterior que no realizaron pedido
* - Descargar nuevas plantillas de Clientify
*
* @category Plazy
* @package Plazy_App
* @author Gaspar
* @link https://app.plazy.eco/
*/
Tareas CRON de puntuación mensual
cron_awards.php
/**
* Guardar puntuaciones mensuales
* Se ejecuta el archivo desde una tarea CRON todos los días 5 de cada mes a las 23:30
*
* @category Plazy
* @package Plazy_App
* @author Gaspar
* @link https://app.plazy.eco/
*/
Tareas CRON de limpiar pedidos
cron_clean_orders.php
/**
* Eliminar pedidos generados desde la web que lleven más de 15 minutos pendientes de pago
* Se ejecuta el archivo desde una tarea CRON todos los días cada minuto
*
* @category Plazy
* @package Plazy_App
* @author Gaspar
* @link https://app.plazy.eco/
*/
Tareas CRON de generar limpieza de paños
cron_panhos.php
/**
* Comprobar si hay que generar limpiezas de paños
* Se ejecuta el archivo desde una tarea CRON todos los días a las 23:00
*
* @category Plazy
* @package Plazy_App
* @author Gaspar
* @link https://app.plazy.eco/
*/
Tareas CRON de servicios que van con retraso
cron_retarded_services.php
/**
* Avisar de pedidos con retraso sin avisar al cliente
* Se ejecuta el archivo desde una tarea CRON todos los días cada 10 minutos
*
* @category Plazy
* @package Plazy_App
* @author Gaspar
* @link https://app.plazy.eco/
*/
Tareas CRON de pago de cuotas
cron_subscriptions_fees.php
/**
* Enviar pagos recurrentes a Redsys
* Se ejecuta el archivo desde una tarea CRON a las 7:00
*
* @category Plazy
* @package Plazy_App
* @author Gaspar
* @link https://app.plazy.eco/
*/
Tareas CRON de previsión meteorológica
cron_weather_cps.php
/**
* Obtener previsión meteorológica de cada CP
* Se ejecuta el archivo desde una tarea CRON todos los días a las 3:00 cada minuto
*
* @category Plazy
* @package Plazy_App
* @author Gaspar
* @link https://app.plazy.eco/
*/
Funciones para las ausencias
functions_absences.php
/**
* Listado de ausencias
*
* @param int $status Id de estado (0 pendientes, 1 aprobadas)
* @param int $id Id de empleado (0 para mostrar todos)
* @return array $data Listado de ausencias
*/
function absencesList($status, $id = 0)
/**
* Listado de ausencias aprobadas con servicios en agenda afectados
*
* @return array $data Listado de ausencias
*/
function absencesListWithWashes()
/**
* Lista de ausencias aprobadas en una semana de los plaziers (para selección de servicio)
*
* @param string $date Fecha Y-m-d H:i:s
* @param string $limit IDs de plaziers a excluir
* @return array $data Listado de ausencias
*/
function absencesWeekList($date = false, $limit = '')
/**
* Nueva ausencia
*/
function addAbsence()
/**
* Borrar ausencia
*/
function deleteAbsence()
/**
* Aprobar ausencia
*/
function approveAbsence()
/**
* Avisar a clientes de cancelación por ausencia
*/
function absenceCancelNotice()
/**
* Calcular vacaciones de un usuario en el año actual
*
* @param int $id Id de empleado
* @return object $data Datos de vacaciones
*/
function userHolidays($id = false)
/**
* Calcular asuntos propios de un usuario en el año actual
*
* @param int $id Id de empleado
* @return object $data Datos de asuntos propios
*/
function userPersonalDays($id = false)
/**
* Comprobar si un plazier está ausente en un día concreto
*
* @param int $id Id de empleado
* @param string $date Fecha Y-m-d
* @return boolean Si/No
*/
function checkPlazierAbsenceDay($id, $date)
Funciones para tiempos de trayecto
functions_breaks.php
/**
* Lista de tiempos de trayectos
*
* @param int $pag Página
* @param int $num Clientes por página
* @param string $order Orden de listado
* @return array $data Registros de la tabla
*/
function breaksList($pag, $num, $order = 'start DESC')
/**
* Contador de tiempo de trayecto
*
* @return string Mensaje de notificación
*/
function plazierBreak()
/**
* Modificar tiempo de trayecto
*/
function editBreak()
/**
* Borrar trayecto
*/
function deleteBreak()
/**
* Comprobar si el plazier tiene contador de trayecto activo
*
* @return string Tiempo de inicio del contador
*/
function checkPlazierBreak()
/**
* Obtener media de trayectos de regreso por día y Plazier
*
* @param int $id Plazier
* @return string $data Media
*/
function plazierAverageBreaks($id)
/**
* Obtener filtro de trayectos
*
* @return array $data Filtros
*/
function getBreaksFilters()
/**
* Guardar filtro de trayectos
*/
function setBreaksFilters()
Funciones para cálculo de rentabilidad y ocupación de agenda
functions_calendar.php
/**
* Obtener salarios activos entre dos fechas
*
* @param string $date_from Fecha inicio
* @param string $date_to Fecha fin
* @param int $id Id de plazier (0 para todos)
* @param int $f_id Id de franquicia (0 para todas)
* @return array $data Salarios asociados
*/
function get_salaries_dates($date_from, $date_to, $id = 0, $f_id = 0)
/**
* Información de los días entre dos fechas
*
* @param string $date_from Fecha inicial
* @param string $date_to Fecha final
* @return array $data Información de los días
*/
function get_working_days($date_from, $date_to)
/**
* Comprobar días laborables de ausencia de un plazier entre dos fechas
*
* @param int $id Id de empleado
* @param string $date_from Fecha desde Y-m-d
* @param string $date_to Fecha hasta Y-m-d
* @param boolean $vacations Incluir vacaciones/asuntos propios
* @return int $data Nº de días ausente
*/
function checkPlazierAbsenceRange($id, $date_from, $date_to, $vacations = false)
/**
* Comprobar días laborables de ausencia de un plazier entre dos fechas, teniendo en cuenta los días activos del salario
*
* @param int $id Id de empleado
* @param string $date_from Fecha desde Y-m-d
* @param string $date_to Fecha hasta Y-m-d
* @param array $days Días de la semana (empieza en 0 para Domingo)
* @return int $data Nº de días ausente
*/
function checkSalaryAbsenceRange($id, $date_from, $date_to, $days)
/**
* Comprobar días festivos dentro de los días laborables de ausencia de un plazier entre dos fechas
*
* @param int $id Id de empleado
* @param string $date_from Fecha desde Y-m-d
* @param string $date_to Fecha hasta Y-m-d
* @param array $days Días de la semana (empieza en 0 para Domingo)
* @return int $count Nº de días ausente
*/
function checkSalaryAbsenceRangeFestives($id, $date_from, $date_to, $days)
/**
* Servicios de un plazier entre dos fechas
*
* @param int $id Plazier
* @param string $date_from Fecha inicial
* @param string $date_to Fecha final
* @param boolean $finished Solo finalizados si/no
* @return object $data Nº de servicios, tiempo y precio total
*/
function plazierWhasesRange($id, $date_from, $date_to, $finished = false)
/**
* Servicios previstos/finalizados de un plazier entre dos fechas
*
* @param int $id Plazier
* @param string $date_from Fecha inicial
* @param string $date_to Fecha final
* @return object $data Nº de servicios, tiempo y precio total
*/
function plazierWhasesRangeCompare($id, $date_from, $date_to)
/**
* Calcular ocupación semanal de un mes
*
* @return array $data Ocupación de cada semana
*/
function weekNumbersOcupation()
/**
* Detalles de la ocupación de una semana
*
* @return string $info Información de la semana
*/
function weekOcupationInfo()
/**
* Calcular ocupación media de un rango
*
* @param string $start Fecha inicial
* @param string $end Fecha final
* @param int $plazier Id de plazier (0 para todos)
* @param boolean $day Día (1) o Rango (0)
* @return array $data Ocupación media y detalles
*/
function rangeOcupationAverage($start, $end, $plazier, $day = 0)
/**
* Calcular rentabilidad/ocupación del día
*
* @return string $data Html para el calendario
*/
function calendarDay()
/**
* Detalles de la rentabilidad/ocupación del día
*
* @return string $data Html para el calendario
*/
function calendarDayInfo()
/**
* Detalles de tiempo de trabajo/descanso del día
*
* @return string $info Html para el calendario
*/
function calendarDayTimeControl()
/**
* Totales de tiempo de trabajo/descanso del día
*
* @param int $id Id de fichaje
* @param string $date Fecha Y-m-d
* @param int $plazier Id de Plazier
* @return array $data Tiempos totales
*/
function calendarDayTimeControlTotals($id, $date, $plazier)
/**
* Calcular ocupación prevista/real del día
*
* @param string $date Fecha Y-m-d
* @param int $f_id Id de franquicia (0 para todas)
* @param int $active Solo Plaziers activos para informes (0 para todos)
* @return array $data Ocupación prevista/real
*/
function calendarDayCompare($date, $f_id = 0, $active = 0)
/**
* Tabla de rentabilidad/ocupación de x semanas
*
* @return string $data Html de tabla
*/
function weekRentability()
/**
* Obtener media de tiempo de ruta en servicios
*
* @return int $data Media
*/
function average_route()
/**
* Obtener medias de tiempo de ruta en servicios con tiempo estimado
*
* @param string $from Desde
* @param string $to Hasta
* @param int $f_id Id de franquicia
* @return object $data Media estimada/real
*/
function average_route_estimate($from = false, $to = false, $f_id = 0)
/**
* Obtener media de tiempo de espera
* Solo si es menor de 40 minutos
*
* @param string $from Desde
* @param string $to Hasta
* @param int $f_id Id de franquicia
* @return int $data Media
*/
function average_waiting($from = false, $to = false, $f_id = 0)
/**
* Obtener media de tiempo de espera final
* Solo si es menor de 40 minutos
*
* @param string $from Desde
* @param string $to Hasta
* @param int $f_id Id de franquicia
* @return int $data Media
*/
function average_waiting_final($from = false, $to = false, $f_id = 0)
Funciones de la API de Clientify
functions_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
* @return int $id Id de cliente en Clientify
*/
function clientify_search($first_name, $last_name, $email, $phone, $contact_type, $contact_source, $create)
/**
* 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
* @return int $id Id de cliente en Clientify
*/
function clientify_create_contact($first_name, $last_name, $email, $phone, $contact_type, $contact_source)
/**
* Crear pedido
*
* @param int $order_id Id de pedido
* @return string $response Respuesta
*/
function clientify_create_order($order_id)
/**
* Crear carrito abandonado
*
* @param int $order_id Id de pedido
* @return string $response Respuesta
*/
function clientify_create_abandoned_order($order_id)
Funciones comunes
functions_common.php
/**
* Cargar todos los registros de una tabla
*
* @param string $table Tabla en la que buscar los registros
* @param string $order Orden de listado
* @return array $data Registros de la tabla
*/
function get_all($table, $order = 'id DESC')
/**
* Cargar todos los registros de una tabla relacionados
*
* @param string $table Tabla en la que buscar los registros
* @param string $field Campo a buscar
* @param int $id Valor relacionado
* @param string $order Orden de listado
* @return array $data Registros de la tabla
*/
function get_all_related($table, $field, $id, $order = 'id DESC')
/**
* Cargar todos los registros de una tabla por páginas
*
* @param string $table Tabla en la que buscar los registros
* @param int $pag Página
* @param int $num Registros por página
* @param string $order Orden de listado
* @return array $data Registros de la tabla
*/
function get_all_pag($table, $pag, $num, $order = 'id DESC')
/**
* Cargar los registros con valor distinto de una tabla
*
* @param string $table Tabla en la que buscar los registros
* @param string $field Campo distinto
* @param string $order Orden de listado
* @return array $data Registros de la tabla
*/
function get_distinct($table, $field, $order = 'id DESC')
/**
* Cargar registro por ID
*
* @param string $table Tabla en la que buscar el registro
* @param int $id Id a buscar
* @return object $data Registro encontrado
*/
function get_by_id($table, $id)
/**
* Cargar registro por slug
*
* @param string $table Tabla en la que buscar el registro
* @param string $field Nombre del campo
* @param string $slug Slug a buscar
* @return object $data Registro encontrado
*/
function get_by_field_slug($table, $field, $slug)
/**
* Cargar campo en un idioma
*
* @param string $table Tabla en la que buscar el registro
* @param string $field Nombre del campo a buscar
* @param int $id Id a buscar
* @param string $lang Idioma
* @return string $data Campo
*/
function get_translate($table, $field, $id, $lang)
/**
* Cargar registro por ID desde ajax
*
* @return string $data Fila encontrada
*/
function getajax_by_id()
/**
* Cargar campo por ID
*
* @param string $table Tabla en la que buscar el registro
* @param string $field Campo a buscar
* @param int $id Id a buscar
* @return string $data Campo encontrado
*/
function get_field_by_id($table, $field, $id)
/**
* Cargar campo por ID desde ajax
*
* @return string $data Campo encontrado
*/
function getajax_field_by_id()
/**
* Modificar campo int por ID desde ajax
*/
function setajax_intfield_by_id()
/**
* Modificar campo string por ID desde ajax
*/
function setajax_strfield_by_id()
/**
* Número de registros
*
* @param string $table Tabla
* @return int $total Número de registros
*/
function get_total($table)
/**
* Número de registros relacionados
*
* @param string $table Tabla en la que buscar el registro
* @param string $field Campo a buscar
* @param int $id Valor relacionado
* @return int $total Número de registros encontrados
*/
function get_total_related($table, $field, $id)
/**
* Formato de moneda €
*
* @param int $total Importe
* @return string Cadena en formato euro
*/
function get_money($total)
/**
* Formato de distancia
*
* @param int $dist Metros
* @return string Cadena en formato distancia
*/
function get_distance($dist)
/**
* Calcular porcentaje
*
* @param int $total 100%
* @param int $int Cantidad
* @return float $percent Porcentaje
*/
function get_percent($total, $int)
/**
* Borrar texto del plugin Froala Editor
*
* @param string $text Texto original del textarea
* @return string $return Texto eliminando la cadena de Froala
*/
function delete_froala($text)
/**
* Quitar caracteres especiales
*
* @param string $str Texto original
* @param int $min Convertir a minúsculas si (1) no (0)
* @return string Texto convertido
*/
function replace_special_characters($str, $min = 0)
/**
* Validar móvil
*
* @param string $tel Teléfono
* @return boolean Si es válido
*/
function validate_mobile($tel)
/**
* 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.
* @param string $key Campo único.
*/
function unique_multidim_array($array, $key)
/**
* Limpiar cadena para url
*
* @param string $cadena Cadena a limpiar
*/
function limpiar_cadena_url($cadena)
/**
* Enviar mensaje SMS
*
* @param string $tel Teléfono
* @param string $rte Remitente
* @param string $text Texto
* @return boolean SMS enviado
*/
function send_sms($tel, $rte, $text)
/**
* Borrar imagen original
*
* @param string $filename Nombre del archivo
*/
function delete_original_img($filename)
/**
* Borrar todos los tamaños de una imagen
*
* @param string $filename Nombre del archivo
*/
function delete_all_img($filename)
/**
* Enviar email con PHPMailer
*
* @param string $destinatario Correo(s) electrónico(s) de destino separados por comas
* @param string $asunto Asunto del correo
* @param string $mensaje_html Contenido del correo en formato HTML
* @param string $mensaje_text Contenido del correo en formato texto plano
* @param string $attachment Adjunto
*/
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
function sendPhpmailerEmail($destinatario, $asunto, $mensaje_html, $mensaje_text, $attachment = false)
/**
* Guardar log
*
* @param string $name Título de la acción
* @param string $description Descripción de la acción
*/
function addNewLog($name, $description)
/**
* Conexión con API WhatsApp de 360 Dialog
*
* @param string $endpoint Endpoint de la API
* @param string $request Tipo de petición
* @param array $payload Datos a enviar
* @return array $response Array con resultados
*/
function apiWhatsApp360($endpoint, $request, $payload = false)
/**
* Obtener URL de pago con Waylet
*
* @param int $order_id ID de pago
* @return string URL
*/
function wayletPayUrl($order_id)
Funciones de configuración
functions_configuration.php
/**
* Configuración del usuario
*
* @return object $data Opciones del usuario
*/
function get_options()
/**
* Configuración general
*
* @return object $data Opciones generales
*/
function get_config()
/**
* Obtener email de configuración
*
* @param string $category Categoría
* @return string $email Email
*/
function get_config_email($category)
/**
* Obtener valor de configuración de facturas
*
* @param string $option Opción
* @return string $value Valor
*/
function get_config_invoice($option)
/**
* Guardar tamaño de sidebar
*/
function sidebar_size()
/**
* Cargar número de registros por página
*
* @return int $data Registros por página
*/
function get_num_per_page()
/**
* Guardar número de registros por página
*
* @param int $num Registros por página
*/
function set_num_per_page($num)
/**
* Cargar orden de registros
*
* @param string $field Nombre del campo
* @return string $data Valor del campo
*/
function get_order_page($field)
/**
* Guardar orden de registros
*
* @param string $field Nombre del campo
* @param string $orden Valor del campo
*/
function set_order_page($field, $orden)
/**
* Modificar configuración del informe de tiempos de servicios
*/
function configWashesTimesIds()
/**
* Modificar configuración general
*/
function configGeneral()
/**
* Modificar configuración de emails
*/
function configGeneralEmails()
/**
* Modificar configuración de facturas
*/
function configFacturas()
/**
* Comprobar si un mensaje está activo por categoría
*
* @param int $id_cat Id de categoría
* @param name $name Nombre del mensaje
*/
function checkMensaje($id_cat, $name)
/**
* Mensaje por categoría
*
* @param int $id_cat Id de categoría
* @param name $name Nombre del mensaje
* @param field $field Tipo de mensaje
*/
function getMensaje($id_cat, $name, $field)
/**
* Modificar configuración de Mensajes
*/
function configMensajes()
/**
* Modificar configuración de Mensajes de categoría
*/
function configMensajesCategoria()
/**
* Modificar configuración de emails de modos de pago
*/
function configEmail()
/**
* Modificar configuración de pantallas de pago
*/
function configPagos()
/**
* Modificar configuración de Agenda
*/
function configAgenda()
/**
* Modificar hora de media jornada en Agenda
*/
function configAgendaPartTime()
/**
* Modificar configuración de tiempo de espera
*/
function configWaitTimes()
/**
* Modificar configuración de ausencias
*/
function configAbsences()
/**
* Añadir/Modificar festivo
*
* @return string $data Listado de festivos actualizado
*/
function editFestives()
/**
* Comprobar si un día está configurado como festivo en determinadas zonas
*
* @param string $date Fecha Y-m-d
* @param array $zones Ids de zonas
* @return boolean Si/No
*/
function isFestiveInZones($date, $zones)
/**
* Comprobar los festivos en determinadas zonas
*
* @param array $zones Ids de zonas
* @return array $data Festivos
*/
function festivesInZones($zones)
/**
* Borrar festivo
*/
function deleteFestive()
/**
* Añadir/Modificar tipo de ausencia
*
* @return string $data Listado de ausencias actualizado
*/
function editAbsence()
/**
* Borrar tipo de ausencia
*/
function deleteAbsenceType()
Funciones de formularios de contacto
functions_contacts.php
/**
* Lista de formularios
*
* @param int $pag Página
* @param int $num Formularios por página
* @param string $order Orden de listado
* @return array $data Listado de formularios
*/
function contactsList($pag, $num, $order)
/**
* Nº de formularios por día
*
* @param string $day Fecha Y-m-d
* @param int $status ID de estado (0 para todos)
* @return int $data Nº de formularios
*/
function contactsInDay($day, $status = 0)
/**
* Añadir/Modificar contacto
*/
function editContact()
/**
* Detalles de formulario
*
* @return string $data Tabla con datos de formulario
*/
function viewContact()
/**
* Guardar estado de formulario
*/
function editContactStatus()
/**
* Obtener filtro de formularios
*
* @return array $data Filtros
*/
function getContactsFilters()
/**
* Guardar filtro de formularios
*/
function setContactsFilters()
/**
* Borrar contacto
*/
function deleteContact()
Funciones de cupones
functions_coupons.php
/**
* Lista de cupones usados
*
* @param int $pag Página
* @param int $num Cupones por página
* @param string $order Orden de listado
* @param int $id Id de usuario (0 para todos)
* @return array $data Listado de cupones
*/
function couponsListUsed($pag, $num, $order, $id = 0)
/**
* Lista de cupones
*
* @param int $pag Página
* @param int $num Cupones por página
* @param string $order Orden de listado
* @return array $data Listado de cupones
*/
function couponsList($pag, $num, $order)
/**
* Lista de cupones pendientes de usar
*
* @param int $pag Página
* @param int $num Cupones por página
* @param string $order Orden de listado
* @return array $data Listado de cupones
*/
function couponsPendingList($pag, $num, $order)
/**
* Nuevo cupón
*
* @return array $jsondata Mensaje de notificación
*/
function addCoupon()
/**
* Nuevo cupón por incidencia
*
* @param string $name Nombre
* @param int $discount Descuento
* @param int $type Tipo
* @param int $user_id Id de usuario
*/
function addIncidenceCoupon($name, $discount, $type, $user_id)
/**
* Nuevo cupón de reseña en Google
*
* @return array $jsondata Mensaje de notificación
*/
function addCouponGoogleReview()
/**
* Modificar cupón
*
* @return array $jsondata Mensaje de notificación
*/
function editCoupon()
/**
* Borrar cupón
*/
function deleteCoupon()
/**
* Obtener cupón por nombre
*
* @param string $name Nombre de cupón
* @return array $data Datos de promoción
*/
function getCouponByName($name)
/**
* Comprobar si un cupón es válido por nombre
*
* @param string $name Nombre de cupón
* @param int $user_id Id de usuario
* @return boolean
*/
function isValidCoupon($name, $user_id)
/**
* Comprobar usos de un cupón en pedidos sin cancelar
*
* @param string $name Nombre de cupón.
* @param id $user_id Id de usuario (0 para todos).
* @return int $total Nº de usos
*/
function couponTotalUses($name, $user_id = 0)
/**
* Aplicar cupón a importe
*
* @param int $id Id de cupón
* @param string $price Importe original
* @return string $data Importe con descuento aplicado
*/
function applyCoupon($id, $price)
/**
* Obtener descuento de cupón sobre importe
*
* @param int $id Id de cupón
* @param string $price Importe original
* @return string $desc Descuento aplicado
*/
function getCouponDiscount($id, $price)
/**
* Lista de promociones
*
* @param int $pag Página
* @param int $num Promociones por página
* @param string $order Orden de listado
* @return array $data Listado de promociones
*/
function promotionsList($pag, $num, $order)
/**
* Obtener promoción por slug
*
* @param string $slug Slug de promoción
* @return array $data Datos de promoción
*/
function getPromotionBySlug($slug)
/**
* Nuevo cupón de promoción
*
* @param string $name Nombre de cupón
* @param int $type Tipo de descuento
* @param float $discount Descuento
* @param int $user_id Id de usuario
*/
function addPromoCoupon($name, $type, $discount, $user_id)
/**
* Editar promoción
*/
function editPromo()
/**
* Enviar invitación de cliente
*
* @param int $id Id de cliente
* @param string $email Mail del invitado
* @param string $phone Teléfono del invitado
* @return array $data Datos de invitaciones
*/
function inviteFriend($id, $email, $phone)
/**
* Comprobar invitación de cliente
*
* @param int $id Id de cliente
* @param string $email Mail del invitado
* @return boolean Si es válido
*/
function checkPromoFriend($id, $email)
/**
* Invitaciones enviadas por un cliente
*
* @param int $id Id de cliente
* @return array $data Datos de invitaciones
*/
function userPromoFriends($id)
/**
* Invitaciones enviadas por un cliente y finalizadas
*
* @param int $id Id de cliente
* @return int $total Nº de invitaciones
*/
function userPromoFriendsOk($id)
/**
* Cupones de reseñas enviadas por un cliente y finalizadas
*
* @param int $id Id de cliente
* @return int $total Nº de cupones
*/
function userPromoReviews($id)
/**
* Añadir nuevo cupón de reseña enviada por un cliente
*
* @param int $id Id de cliente
*/
function addUserPromoReview($id)
/**
* Lista de invitaciones y cupones
*
* @param int $pag Página
* @param int $num Items por página
* @param int $id Id de Plazier (0 para todos)
* @param int $success Solo confirmadas
* @param string $from Desde
* @param string $to Hasta
* @return array $data Listado de invitaciones
*/
function invitationsList($pag, $num, $id = 0, $success = 0, $f_id = 0, $from = '', $to = '')
/**
* Total de invitaciones y cupones
*
* @param int $id Id de Plazier
* @param int $f_id Id de franquicia
* @param string $from Desde
* @param string $to Hasta
* @return array $data Total y comisión
*/
function invitationsTotals($id = 0, $f_id = 0, $from = '', $to = '')
/**
* Enviar invitación
*
* @return array $jsondata Mensaje de notificación
*/
function sendPlazierInvitation()
/**
* Enviar cupón de Plazier
*
* @return array $jsondata Mensaje de notificación
*/
function sendPlazierCoupon()
/**
* Comprobar invitación de Plazier
*
* @param int $id Id de Plazier
* @param string $email Mail del invitado
* @return boolean Si es válido
*/
function checkPlazierInvitation($id, $email)
Funciones de clientes
functions_customers.php
/**
* Lista de clientes
*
* @param int $pag Página
* @param int $num Clientes por página
* @param string $order Orden de listado
* @param int $b2b Clientes B2B Si(1)/No(0)
* @return array $data Listado de clientes
*/
function customersList($pag, $num, $order, $b2b)
/**
* Lista de clientes registrados entre dos fechas
*
* @param string $from Fecha inicial
* @param string $to Fecha final
* @param int $pag Página
* @param int $num Clientes por página
* @param string $order Orden
* @return array $data Listado de clientes
*/
function customersRangeList($from, $to, $pag, $num, $order)
/**
* Obtener datos de cliente
*
* @param int $id Id de cliente
* @return object $data Datos de usuario
*/
function getCustomer($id)
/**
* Obtener datos de cliente por AJAX
*
* @return object $data Datos de usuario
*/
function get_customer_ajax()
/**
* Nuevo cliente
*
* @return array $jsondata Mensaje de notificación
*/
function addCustomer()
/**
* Modificar cliente
*
* @return array $jsondata Mensaje de notificación
*/
function editCustomer()
/**
* Modificar cliente con datos web
*/
function editCustomerWeb()
/**
* Modificar imagen de perfil
*/
function editCustomerImage()
/**
* Modificar imagen de perfil con URL externa
*/
function editCustomerImageUrl()
/**
* Borrar cliente
*/
function deleteCustomer()
/**
* Comprobar disponibilidad de email
*
* @param int $id Id de cliente (enviar 0 si es un nuevo cliente)
* @param string $mail Correo electrónico
* @return boolean Si el email es válido
*/
function checkAvailableCustomerEmail($id, $mail)
/**
* Datos de cliente por email
*
* @param string $mail Correo electrónico
* @return object $row Datos de cliente
*/
function getCustomerByEmail($mail)
/**
* Enlazar cliente de la App con el de la Web
*
* @param int $id Id de la App
* @param int $web_id Id de la Web
*/
function addCustomerWebId($id, $web_id)
/**
* Lista de vehículos
*
* @param int $id Id de cliente (0 para todos los clientes)
* @param int $pag Página
* @param int $num Vehículos por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @param int $subcat Subcategoría
* @return array $data Listado de vehículos
*/
function customersVehiclesList($id, $pag, $num, $order, $json = false, $subcat = false)
/**
* Nuevo vehículo de cliente
*
* @return array $jsondata Mensaje de notificación
*/
function addCustomerVehicle()
/**
* Modificar vehículo de cliente
*
* @return array $jsondata Mensaje de notificación
*/
function editCustomerVehicle()
/**
* Borrar vehículo de cliente
*/
function deleteCustomerVehicle()
/**
* Lista de direcciones de servicio
*
* @param int $id Id de cliente (0 para todos los clientes)
* @param int $pag Página
* @param int $num Direcciones por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de direcciones
*/
function customersAddressList($id, $pag, $num, $order, $json = false)
/**
* Lista de direcciones de servicio no válidas
*
* @param int $id Id de cliente (0 para todos los clientes)
* @param int $pag Página
* @param int $num Direcciones por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de direcciones
*/
function customersAddressErrorList($id, $pag, $num, $order, $json = false)
/**
* Lista de CPs no válidos
*
* @return array $data Listado de CPs
*/
function customersAddressErrorCPs()
/**
* Datos de dirección
*
* @param int $id Id de dirección
* @return array $data Datos de dirección
*/
function getCustomerAddress($id)
/**
* Lista de direcciones de facturación
*
* @param int $id Id de cliente (0 para todos los clientes)
* @param int $pag Página
* @param int $num Direcciones por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de direcciones
*/
function customersAddressInvoiceList($id, $pag, $num, $order, $json = false)
/**
* Nueva dirección de servicio de cliente
*
* @return array $jsondata Mensaje de notificación
*/
function addCustomerAddress()
/**
* Guardar dirección no disponible de cliente
*/
function addCustomerAddressError()
/**
* Modificar dirección de servicio de cliente
*
* @return array $jsondata Mensaje de notificación
*/
function editCustomerAddress()
/**
* Borrar dirección de servicio de cliente
*/
function deleteCustomerAddress()
/**
* Añadir/Modificar dirección de facturación de cliente
*
* @return array $jsondata Mensaje de notificación
*/
function customerAddressInvoice()
/**
* Borrar dirección de facturación de cliente
*/
function deleteCustomerAddressInvoice()
/**
* Actualizar correo de usuario en WordPress
*
* @param int $id Id de usuario en la Web
* @param string $email Nuevo email de usuario
* @return object $data Info de estado
*/
function updateWebUserEmail($id, $email)
/**
* Añadir servicios específicos para clientes de empresa
*/
function addCustomerB2bService()
/**
* Borrar servicios específicos para clientes de empresa
*/
function deleteCustomerB2bService()
/**
* Avisar a clientes de cancelación por Plazier archivado
*/
function archivedCancelNotice()
/**
* Servicio actual/siguiente de un usuario
*
* @param int $id Id de usuario
* @return array $data Info de servicios
*/
function getUserNearWash($id)
/**
* Vehículo de usuario
*
* @param int $id Id de vehículo
* @return array $data Info de vehículo
*/
function getUserVehicle($id)
/**
* Vehículo de usuario con más servicios
*
* @param int $id Id de usuario
* @return array $data Info de vehículo
*/
function getUserBestVehicle($id)
/**
* Siguiente servicio de vehículo de usuario
*
* @param int $id Id de vehículo de usuario
* @return array $data Info de servicio
*/
function getUserVehicleNextWash($id)
/**
* Último servicio de vehículo de usuario
*
* @param int $id Id de vehículo de usuario
* @return array $data Info de servicio
*/
function getUserVehicleLastWash($id)
/**
* Solicitar certificado
*/
function environmentalCertificate()
Funciones de fecha y hora
functions_datetime.php
/**
* Formato de fecha indicando Ayer/Hoy/Mañana
*
* @param string $date Fecha a convertir
* @return string Fecha convertida
*/
function get_date($date)
/**
* Formato de fecha
*
* @param string $date Fecha a convertir
* @return string Fecha convertida
*/
function get_date_($date)
/**
* 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)
/**
* Día de la semana en español
*
* @param string $date Fecha Y-m-d a convertir
* @return string Nombre de día de la semana
*/
function es_day($date)
/**
* Formato de día y hora
*
* @param string $date Fecha a convertir
* @return string Fecha y hora convertida
*/
function get_datetime($date)
/**
* Formato de hora
*
* @param string $date Fecha a convertir
* @return string Hora convertida
*/
function get_time($date)
/**
* Minutos de diferencia entre dos fechas
*
* @param string $from Fecha inicial
* @param string $to Fecha final
* @return int Minutos
*/
function dif_minutes($from, $to)
/**
* Convertir minutos en horas y minutos
*
* @param int $time Nº de minutos
* @return string Cadena H horas i minutos
*/
function convertToHoursMins($time)
/**
* Redondear hora a la siguiente hora múltiplo de 5
*
* @param string $time Hora (H:i)
* @param boolean $to Hacia arriba (true) o hacia abajo (false)
* @return string $time Hora redondeada
*/
function roundTime5($time, $to = true)
/**
* Redondear hora a la siguiente hora múltiplo de 10
*
* @param string $time Hora (H:i)
* @return string $time Hora redondeada
*/
function roundTime10($time)
/**
* Redondear minutos de un servicio a la mitad
*
* @param int $time Minutos
* @return int $time Minutos
*/
function roundTimeHalf($time)
/**
* Calcular días entre fechas
*
* @param string $fecha_inicial Fecha inicial
* @param string $fecha_final Fecha final
* @return int $dias Nº de días
*/
function days_count($fecha_inicial, $fecha_final)
/**
* Calcular días futuros entre fechas
*
* @param string $fecha_inicial Fecha inicial
* @param string $fecha_final Fecha final
* @return int $dias Nº de días
*/
function future_days_count($fecha_inicial, $fecha_final)
/**
* Comprobar nº de días del año
*
* @param string $year Año
* @return int $dias Nº de días
*/
function year_days_count($year)
/**
* Comprobar nº de días de lunes a viernes en un mes/año
*
* @param int $m Mes
* @param int $y Año
* @return int Nº de días
*/
function get_weekdays($m, $y)
/**
* Calcular días de una semana por nº de semana y año
*
* @param int $week Nº de semana
* @param int $year Año
* @param boolean $weekend Incluir o no fines de semana
* @return array $data Días
*/
function week_days($week, $year, $weekend)
/**
* Contar repeticiones de un mismo día de la semana entre dos fechas
*
* @param int $day Día de la semana (empieza en 0 para Domingo)
* @param string $start Día inicial en formato Y-m-d
* @param string $end Día final en formato Y-m-d
* @return int Nº de repeticiones de $day entre $start y $end
*/
function countDays($day, $start, $end)
/**
* Contar festivos entre dos fechas que correspondan a ciertos días de la semana y a ciertas zonas
*
* @param array $days Días de la semana (empieza en 0 para Domingo)
* @param string $start Día inicial en formato Y-m-d
* @param string $end Día final en formato Y-m-d
* @param array $zones Ids de zonas
* @return int $count Nº de días festivos de $days entre $start y $end
*/
function countFestivesInZones($days, $start, $end, $zones)
/**
* Calcular días laborables de un empleado entre dos fechas
*
* @param int $id Id de empleado
* @param string $start Día inicial en formato Y-m-d
* @param string $end Día final en formato Y-m-d
* @return int $days Nº de días laborables de $id entre $start y $end
*/
function countLabDays($id, $start, $end)
/**
* Comprobar si una fecha es mañana como mínimo
*
* @param string $date Fecha
* @return srting $date Fecha
*/
function date_min_tomorrow($date)
Funciones de plantillas de email
functions_emails.php
/**
* Enviar mail de prueba
*/
function emailTest()
/**
* Enviar mail de pago pendiente
*
* @param int $order_id Id de pedido
*/
function emailPayment($order_id)
/**
* Enviar mail de pago realizado
*
* @param int $order_id Id de pedido
*/
function emailCalendar($order_id)
/**
* Enviar mail de pedido cancelado
*
* @param int $order_id Id de pedido
*/
function emailCanceled($order_id)
/**
* Enviar mail de servicio modificado
*
* @param int $wash_id Id de servicio
*/
function emailWashEdit($wash_id)
/**
* Plantilla HTML de email
*
* @param $string $titulo Título del mensaje
* @param $string $texto Cuerpo del mensaje
* @return string $html Contenido de la plantilla
*/
function emailTemplate($titulo, $texto)
Funciones de empleados
functions_employees.php
/**
* Lista de empleados
*
* @param int $pag Página
* @param int $num Empleados por página
* @param string $order Orden de listado
* @param int $dep Id de departamento (0 para todos)
* @param int $del Archivados (1) o Activos (0)
* @param int $rol ID de rol (0 para todos)
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de empleados
*/
function employeesList($pag, $num, $order, $dep = 0, $del = 0, $rol = 0, $json = false)
/**
* Lista de empleados básica
*
* @param string $order Orden de listado
* @param int $dep Id de departamento (0 para todos)
* @param boolean $ids Solo ids o todos los datos
* @return array $data Listado de empleados
*/
function employeesBasicList($order = 'id ASC', $dep = 0, $ids = false)
/**
* Obtener filtro de empleados
*
* @return array $data Filtros
*/
function getEmployeesFilters()
/**
* Guardar filtro de empleados
*/
function setEmployeesFilters()
/**
* Lista de plaziers en activo
*
* @param int $all Todos los Plaziers
* @return array $data Listado de plaziers en activo
*/
function plaziersList($all = 0)
/**
* Lista de plaziers distintos con servicios
*
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @return array $data Listado de plaziers en activo
*/
function plaziersDistinct($from = '', $to = '')
/**
* Desempeño medio entre fechas
*
* @param int $id Id de Plazier
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @return array $data Nota media y total de servicios
*/
function plaziersRangePerformance($id, $from = '', $to = '')
/**
* Comprobar siguiente nº de plazier
*
* @return int $number Número a usar
*/
function getPlazierNumber()
/**
* Lista de departamentos
*
* @param int $pag Página
* @param int $num Departamentos por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de departamentos
*/
function departmentsList($pag, $num, $order, $json = false)
/**
* Nuevo departamento
*
* @return array $jsondata Mensaje de notificación
*/
function addDepartment()
/**
* Modificar icono de departamento
*/
function editDepartmentImage()
/**
* Modificar departamento
*
* @return array $jsondata Mensaje de notificación
*/
function editDepartment()
/**
* Borrar departamento
*/
function deleteDepartment()
/**
* Obtener agenda de empleado
*
* @param int $id Id de empleado
* @return object $data Horarios
*/
function getUserSchedule($id)
/**
* Obtener horario de empleado en un día
*
* @param int $id Id de empleado
* @param int $d Nº de día (1-7)
* @return object $data Horarios
*/
function getUserDaySchedule($id, $d)
/**
* Comprobar si un Plazier trabaja en un día
*
* @param int $id Id de empleado
* @param string $date Fecha (Y-m-d)
* @return string $start Hora inicial
*/
function checkPlazierAvailableDay($id, $date)
/**
* Modificar agenda de empleado
*
* @return array $jsondata Mensaje de notificación
*/
function editUserSchedule()
/**
* Comprobar última limpieza de paños de un Plazier
*
* @param int $id Id de empleado
* @return array $data Fecha de última limpieza y Nº de servicios desde esa fecha hasta ahora
*/
function checkPlazierLastPanhos($id)
/**
* Obtener salarios de un empleado
*
* @param int $product Id de empleado
* @param int $type Tipo de salario: mensual (0) o por horas (1)
* @return array $data Salarios asociados
*/
function get_user_salaries($user_id, $type = 0)
/**
* Comprobar si un empleado tiene salario activo
*
* @param int $id Id de empleado
* @return boolean Si hay salario activo o no
*/
function checkUserActiveSalary($id)
/**
* Comprobar si un empleado tiene salario activo en un día
*
* @param int $id Id de empleado
* @param string $date Fecha Y-m-d
* @return boolean Si hay salario activo o no
*/
function checkPlazierSalaryDate($id, $date)
/**
* Datos de salario activo de un empleado
*
* @param int $id Id de empleado
* @return array $data Datos de salario
*/
function get_user_active_salary($id)
/**
* Datos del salario de un empleado por fecha
*
* @param int $id Id de empleado
* @param string $date Fecha Y-m-d
* @return array $data Datos de salario
*/
function get_user_salary_by_date($id, $date)
/**
* Obtener fecha de último servicio agendado de un Plazier
*
* @param int $id Id de empleado
* @return string $data Fecha
*/
function get_user_last_wash($id)
/**
* Obtener fechas de futuros servicios de un Plazier
*
* @param int $id Id de empleado
* @return array $data Fechas
*/
function get_user_future_washes($id)
/**
* Añadir salarios
*
* @return array $jsondata Mensaje de notificación
*/
function addSalary()
/**
* Modificar salario
*
* @return array $jsondata Mensaje de notificación
*/
function editSalary()
/**
* Finalizar salario
*/
function endSalary()
/**
* Borrar salario
*/
function deleteSalary()
/**
* Obtener zonas de un empleado
*
* @param int $user_id Id de empleado
* @return array $data Zonas asociadas
*/
function get_user_zones($user_id)
/**
* Obtener zonas alternativas de un empleado
*
* @param int $user_id Id de empleado
* @return array $data Zonas asociadas
*/
function get_user_zones_alt($user_id)
/**
* Modificar zonas de empleado
*/
function editUserZones()
/**
* Modificar cuenta de facturación de franquicia
*
* @return array $jsondata Mensaje de notificación
*/
function editUserHoldedAccount()
/**
* Modificar datos de usuario franquicia
*
* @return array $jsondata Mensaje de notificación
*/
function editUserFranchise()
/**
* Modificar servicios de empleado
*/
function editUserServices()
/**
* Modificar vehículo de empleado
*/
function editUserVehicle()
/**
* Modificar grupo de Plaziers
*/
function editPlaziersGroup()
/**
* Obtener plaziers activos de una zona
*
* @param int $zone_id Id de zona
* @return array $data Empleados asociados
*/
function getZonePlaziers($zone_id)
/**
* Obtener plaziers secundarios de una zona
*
* @param int $zone_id Id de zona
* @return array $data Empleados asociados
*/
function getZoneAltPlaziers($zone_id)
/**
* Obtener plaziers de una ETT
*
* @param int $ett_id Id de empleado
* @return array $data Zonas asociadas
*/
function get_ett_users($ett_id)
/**
* Modificar plaziers de ETT
*/
function editEttUsers()
/**
* Obtener información de rentabilidad de un salario
*
* @param object $sal Salario
* @param string $date_from Fecha desde Y-m-d
* @param string $date_to Fecha hasta Y-m-d
* @return array $data Información de rentabilidad
*/
function plazier_salarie_rentability($sal, $date_from, $date_to)
/**
* Obtener información de ocupación de un salario
*
* @param object $sal Salario
* @param string $date_from Fecha desde Y-m-d
* @param string $date_to Fecha hasta Y-m-d
* @return array $data Información de rentabilidad
*/
function plazier_salary_ocupation($sal, $date_from, $date_to)
/**
* Horas de trabajo en festivos entre dos fechas que correspondan a ciertos días de la semana
*
* @param int $id Id de salario
* @param array $days Días de la semana (empieza en 0 para Domingo)
* @param string $start Día inicial en formato Y-m-d
* @param string $end Día final en formato Y-m-d
* @return int $hours Nº de horas en festivos de $days entre $start y $end
*/
function salaryHoursFestives($id, $days, $start, $end)
/**
* Horas de trabajo en ausencias de un plazier entre dos fechas
*
* @param int $id Id de salario
* @param int $plazier Id de empleado
* @param string $date_from Fecha desde Y-m-d
* @param string $date_to Fecha hasta Y-m-d
* @param array $days Días de la semana (empieza en 0 para Domingo)
* @return int $hours Nº de horas ausente
*/
function salaryHoursAbsences($id, $plazier, $date_from, $date_to, $days)
/**
* Horas de trabajo en ausencias de un plazier entre dos fechas que coinciden con festivos
*
* @param int $id Id de salario
* @param int $plazier Id de empleado
* @param string $date_from Fecha desde Y-m-d
* @param string $date_to Fecha hasta Y-m-d
* @param array $days Días de la semana (empieza en 0 para Domingo)
* @return int $hours Nº de horas ausente
*/
function salaryHoursAbsencesFestives($id, $plazier, $date_from, $date_to, $days)
/**
* Días festivos en un salario
*
* @param int $id Id de salario
* @return int $days Nº de días festivos
*/
function salaryDaysFestives($id)
/**
* Ausencia durante un salario
*
* @param int $id Id de salario
* @return array $data Ausencias
*/
function salaryAbsences($id)
/**
* Horas trabajadas durante un salario
*
* @param int $id Id de salario
* @return int $hours Horas
*/
function salaryTimeControl($id)
/**
* Comprobar si un Plazier es un grupo activo
*
* @param int $id Id de empleado
* @return boolean
*/
function checkPlazierGroup($id)
/**
* Comprobar si un Plazier pertenece a un grupo activo
*
* @param int $id Id de empleado
* @return array $row Nombre de grupo
*/
function checkPlazierInGroup($id)
Funciones de Partners
functions_employees_partners.php
/**
* Listado de comisiones entre dos fechas
*
* @param string $id Id de partner (0 para todos)
* @param string $date_from Fecha de inicio
* @param string $date_to Fecha de final
* @return array $data Listado de partners
*/
function get_partners_list($date_from, $date_to, $id = 0)
/**
* Datos totales de partner
*
* @param string $id Id de partner
* @return array $data Totales
*/
function get_partner_totals($id)
/**
* Modificar comisión de Partner
*/
function editPartnerUsers()
/**
* Obtener direcciones de Partners activos
*
* @return array $data Direcciones asociadas
*/
function get_partners_addresses()
/**
* Obtener direcciones de un Partner
*
* @param int $id Id de empleado
* @return array $data Direcciones asociadas
*/
function get_partner_addresses($id)
/**
* Añadir/Editar dirección de Partner
*
* @return array $jsondata Mensaje de notificación
*/
function editPartnerAddress()
/**
* Borrar dirección de Partner
*/
function deletePartnerAddress()
/**
* Añadir/Editar pago a Partner
*
* @return array $jsondata Mensaje de notificación
*/
function editPartnerPago()
/**
* Borrar pago a Partner
*/
function deletePartnerPago()
/**
* Modificar datos de Empresa
*/
function editCompanyUsers()
Funciones de Franquicias
functions_franchises.php
/**
* Comprobar si un Plazier trabaja en la zona de la franquicia logueada
*
* @param int $id Id de plazier
* @return boolean
*/
function check_franchise_plazier($id)
/**
* Comprobar si un servicio pertenece a la franquicia logueada
*
* @param int $id Id de servicio
* @return boolean
*/
function check_franchise_wash($id)
/**
* Comprobar si un pedido tiene servicios que pertenecen a la franquicia logueada
*
* @param int $id Id de pedido
* @return boolean
*/
function check_franchise_order($id)
/**
* Comprobar franquicia a la que pertenece un pedido
*
* @param int $id Id de pedido
* @return boolean
*/
function get_franchise_order($id)
/**
* Comprobar si una paxster pertenece a la franquicia logueada
*
* @param int $id Id de paxster
* @return boolean
*/
function check_franchise_paxster($id)
/**
* Ids de paxsters asociadas a empleados de una franquicia
*
* @return array $data IDs de Paxsters
*/
function get_franchise_paxsters()
/**
* Actualizar stock de vehículos de franquicia
*
* @return array $jsondata Mensaje de notificación
*/
function updateVehiclesStockFranchise()
/**
* Enviar pedido de material a Central
*
* @return array $jsondata Mensaje de notificación
*/
function materialFranchiseOrder()
/**
* Lista de servicios generados entre fechas por una franquicia
*
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @param int $pag Página
* @param int $num Servicios por página
* @param string $order Orden
* @param int $id Id de franquicia
* @return array $data Listado de servicios
*/
function washesListFranchise($from, $to, $pag, $num, $order, $id)
/**
* Lista de empleados básica de una franquicia
*
* @param int $id Id de franquicia
* @param string $order Orden de listado
* @param int $dep Id de departamento (0 para todos)
* @param boolean $ids Solo ids o todos los datos
* @return array $data Listado de empleados
*/
function employeesBasicListFranchise($id, $order = 'id ASC', $dep = 0, $ids = false)
/**
* Obtener siguiente número de factura
*
* @param int $id Id de franquicia
* @return int $numero Número de factura
*/
function getFranchiseInvoiceNumber($id)
/**
* Lista de facturas de la franquicia
*
* @param int $id Id de franquicia
* @return array $data Facturas
*/
function getFranchiseInvoices($id)
/**
* Generar factura del mes pasado de la franquicia
*/
function saveInvoiceFranchise()
/**
* Borrar factura de franquicia
*/
function deleteInvoiceFranchise()
/**
* Comprobar a qué franquicias pertenecen los servicios de un pedido
*
* @param int $id Id de pedido
* @param boolean $text Devolver como texto
* @return array $data Franquicias
*/
function checkOrderFranchises($id, $text = true)
Funciones de gamificación
functions_gamification.php
/**
* Obtener clasificación mensual
*
* @param int $year Año
* @param string $month Mes 01-12
* @return array $data Clasificación de Plaziers
*/
function getMonthClasification($year, $month)
/**
* Obtener histórico de puntos
*
* @param int $year Año (0 para todos)
* @param int $id Id de Plazier (0 para todos)
* @return array $data Puntuación
*/
function getPoints($year = 0, $id = 0)
/**
* Obtener puntos de un Plazier por servicios y desempeño
*
* @param int $id Id de Plazier
* @param string $date_from Fecha inicial Y-m-d
* @param string $date_to Fecha final Y-m-d
* @return array $data Datos de servicios
*/
function getPlazierWashPoints($id, $date_from, $date_to)
/**
* Obtener puntos de un Plazier por incidencias
*
* @param int $id Id de Plazier
* @param string $date_from Fecha inicial Y-m-d
* @param string $date_to Fecha final Y-m-d
* @return array $data Datos de incidencias
*/
function getPlazierIncidencesPoints($id, $date_from, $date_to)
/**
* Obtener puntos de un Plazier por invitaciones
*
* @param int $id Id de Plazier
* @param string $date_from Fecha inicial Y-m-d
* @param string $date_to Fecha final Y-m-d
* @return array $data Datos de invitaciones
*/
function getPlazierInvitationPoints($id, $date_from, $date_to)
Funciones de geolocalización
functions_geolocation.php
/**
* Guardar localización de usuario
*
* @return string Fecha
*/
function saveGeolocation()
/**
* Datos de la última localización del usuario
*
* @param int $id Id de usuario
* @return string $data Fecha
*/
function getLastGeolocation($id = 0)
/**
* Fecha y hora de la última localización del usuario
*
* @param int $id Id de usuario
* @return string $data Fecha
*/
function getLastGeolocationDate($id = 0)
/**
* Obtener dirección en GMaps con coordenadas
*
* @param string $lat Latitud
* @param string $lon Longitud
* @return array $data Dirección
*/
function getGoogleAddressByLatLon($lat, $lon)
Funciones de sincronización con Holded
functions_holded.php
/**
* Sincronizar contacto con Holded
*
* @param int $id Id de usuario
*/
function holded_sync_contact($id)
/**
* Actualizar DNI de contacto con Holded
*
* @param int $id Id de usuario
* @param string $dni DNI
*/
function holded_sync_contact_dni($id, $dni)
/**
* Sincronizar productos simples con Holded
*
* @param int $id Id de producto
*/
function holded_sync_simple_product($id)
/**
* Sincronizar productos variables con Holded
*
* @param int $id Id de producto
*/
function holded_sync_variable_product($id)
/**
* Sincronizar pedido con Holded
*
* @param int $id Id de pedido
*/
function holded_sync_order($id)
/**
* Pagar pedido en Holded
*
* @param int $id Id de pedido
* @param string $doc Tipo de documento
* @param int $refund Si es una devolución
*/
function holded_pay_order($id, $doc, $refund = 0)
/**
* Crear ticket rectificativo
*
* @param int $id Id de pedido
*/
function holded_refund_order($id)
/**
* Sincronizar factura con Holded
*
* @param int $id Id de factura
*/
function holded_sync_invoice($id)
/**
* Pagar factura en Holded
*
* @param int $id Id de pedido
* @param string $doc Tipo de documento
*/
function holded_pay_invoice($id, $doc)
/**
* Borrar pedido/factura en Holded
*
* @param int $id Id de pedido en holded
* @param string $doc Tipo de documento
*/
function holded_delete_order($id, $doc)
/**
* Comprobar cuenta de facturacion
*
* @param int $id Id de pedido
* @param string $account Id de cuenta de Holded
*/
function holded_user_account($id)
Funciones de ideas
functions_ideas.php
/**
* Enviar idea
*/
function sendMessage()
/**
* Lista de ideas
*
* @param int $pag Página
* @param int $num Ideas por página
* @param string $order Orden de listado
* @return array $data Listado de ideas
*/
function ideasList($pag, $num, $order)
/**
* Obtener filtro de ideas
*
* @return array $data Filtros
*/
function getIdeasFilters()
/**
* Guardar filtro de ideas
*/
function setIdeasFilters()
/**
* Ideas totales
*
* @param int $status Id de estado
* @param int $id Id de empleado (0 para mostrar todos)
* @return int $num Total de ideas pendientes
*/
function ideasTotal($status, $id = 0)
/**
* Ideas totales en un rango
*
* @param string $date_from Fecha inicio
* @param string $date_to Fecha final
* @param int $status Id de estado
* @param int $id Id de empleado (0 para mostrar todos)
* @return int $num Total de ideas pendientes
*/
function ideasTotalRange($date_from, $date_to, $status, $id = 0)
/**
* Modificar idea
*/
function editIdea()
Funciones de facturas
functions_invoices.php
/**
* Lista de facturas
*
* @param int $pag Página
* @param int $num Facturas por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de facturas
*/
function invoicesList($pag, $num, $order, $json = false)
/**
* Obtener filtro de facturas de usuario
*
* @return array $data Filtros
*/
function getInvoicesFilters()
/**
* Guardar filtro de facturas de usuario
*/
function setInvoicesFilters()
/**
* Obtener siguiente número de factura del año actual
*
* @param int $year Año
* @return int $number Número de factura
*/
function getNextInvoiceNumber($year)
/**
* Guardar fecha de pago de factura
*/
function saveInvoiceDate()
/**
* Añadir factura
*
* @return array $jsondata Mensaje de notificación
*/
function addInvoice()
/**
* Añadir factura desde la web
*
* @return array $data Mensaje de notificación
*/
function addInvoiceWeb()
/**
* Añadir factura de múltiples pedidos
*/
function addInvoiceMultiple()
/**
* Modificar fecha de factura
*/
function editInvoiceDate()
/**
* Ocultar descuentos en factura
*/
function editInvoiceDiscounts()
/**
* Ocultar matrículas en factura
*/
function editInvoiceNumberPlate()
/**
* Borrar factura
*/
function deleteInvoice()
/**
* Obtener el número de una factura por ID
*
* @param int $id Id de factura
* @return string $number Nº de factura
*/
function getInvoiceNumber($id)
/**
* Comprobar si el pedido ya tiene factura
*
* @param int $id Id de pedido
* @param int $cancel Buscar factura normal (false) o rectificativa (true)
* @return boolean Si la factura existe
*/
function checkOrderInvoice($id, $cancel = false)
/**
* Obtener factura de un pedido
*
* @param int $id Id de pedido
* @param int $cancel Buscar factura rectificativa
* @return object $invoice Factura
*/
function getOrderInvoice($id, $cancel = 0)
/**
* Obtener datos de factura de una cuota
*
* @param int $fee Id de cuota
* @param int $cancel Id de factura rectificada
* @return object $data Datos de factura
*/
function getFeeInvoice($fee = 0, $cancel = 0, $json = false)
/**
* Guardar factura de una cuota
*/
function editFeeInvoice()
Funciones de ITV
functions_itv.php
/**
* Direcciones de ITVs
*
* @param int $pag Página
* @param int $num Zonas por página
* @param string $order Orden de listado
* @return array $data Direcciones
*/
function itvAddressesList($pag, $num, $order)
/**
* Direcciones de ITVs en una zona
*
* @param $id int Id de zona
* @return $dirs array Direcciones
*/
function getItvAddresses($id)
/**
* Modificar precios de ITV
*
* @return array $jsondata Mensaje de notificación
*/
function editItvPrice()
/**
* Nueva dirección de ITV
*
* @return array $jsondata Mensaje de notificación
*/
function addItvAddress()
/**
* Modificar dirección de ITV
*
* @return array $jsondata Mensaje de notificación
*/
function editItvAddress()
/**
* Borrar dirección de ITV
*/
function deleteItvAddress()
/**
* Obtener tiempo/precio de ITV según tipo de combustible y cupón
*
* @return object $data Tiempo y precio total
*/
function getPriceTimeItv()
/**
* Nuevo servicio de ITV
*
* @return array $jsondata Mensaje de notificación
*/
function addItv()
/**
* Nuevo servicio de ITV desde la web
*
* @return array $jsondata Mensaje de notificación
*/
function addItvWeb()
/**
* Modificar ITV
*
* @return array $jsondata Mensaje de notificación
*/
function editItv()
/**
* Calcular horas disponibles para un servicio de ITV a partir de una fecha.
* Listado completo indicando Plazier.
*
* @return string $data Html con las horas disponibles
*/
function gmaps_route_itv()
/**
* Calcular horas disponibles para un servicio de ITV a partir de una fecha.
* Listado ordenado y sin duplicados sin mostrar Plaziers.
*
* @return string $data Html con las horas disponibles
*/
function gmaps_route_empresa_itv()
/**
* Calcular horas disponibles para un servicio de ITV a partir de una fecha.
* Se devuelve el array filtrado y ordenado.
*
* @return array $data Horas disponibles
*/
function gmaps_route_itv_web($cp_num, $direccion, $wash_time, $date_from)
/**
* Calcular huecos/horas disponibles en agenda para un servicio de ITV
*
* @param string $cp Código postal
* @param string $address Dirección
* @param string $address_itv Dirección de la estación de ITV
* @param int $wash_time Minutos del servicio
* @param string $date_from Fecha de inicio
* @param boolean $sort Ordenar y eliminar duplicados
* @param int $plazier_id Buscar solo en la agenda de un Plazier por ID
* @param string $min Hora mínima H:i
* @return string $data Html con las horas disponibles
*/
function gmaps_route_v2_itv($cp, $address, $address_itv, $wash_time, $date_from, $sort, $plazier_id = 0, $min = 0)
/**
* Huecos disponibles para servicio de ITV de un Plazier un día
*
* @param string $date Día Y-m-d
* @param int $num_w Nº de día de la semana
* @param int $plazier ID de Plazier
* @param int $wash_time Minutos necesarios
* @param string $address Dirección de servicio
* @param int $limit Tiempo máximo de ruta
* @param string $min Hora mínima H:i
* @param string $address_itv Dirección de servicio
* @return array $free Huecos disponibles
*/
function huecos_dia_plazier_itv($date, $num_w, int $plazier, int $wash_time, $address, $limit, $min, $address_itv)
Funciones de stock de material
functions_material.php
/**
* Lista de material
*
* @param int $pag Página
* @param int $num Material por página
* @param string $order Orden de listado
* @param int $del Eliminados (1) o Activos (0)
* @return array $data Listado de material
*/
function materialList($pag, $num, $order, $del = 0)
/**
* Nuevo material
*
* @return array $jsondata Mensaje de notificación
*/
function addMaterial()
/**
* Archivar material
*/
function archiveMaterial()
/**
* Desarchivar material
*/
function desarchiveMaterial()
/**
* Borrar material
*/
function deleteMaterial()
/**
* Modificar material
*
* @return array $jsondata Mensaje de notificación
*/
function editMaterial()
/**
* Modificar imagen de material
*/
function editMaterialImage()
/**
* Lista de vehículos de trabajo
*
* @param int $pag Página
* @param int $num Vehículos por página
* @param string $order Orden de listado
* @param int $del Eliminados (1) o Activos (0)
* @return array $data Listado de vehículos
*/
function materialVehiclesList($pag, $num, $order, $del = 0)
/**
* Nuevo vehículo de trabajo
*
* @return array $jsondata Mensaje de notificación
*/
function addMaterialVehicle()
/**
* Archivar vehículo de trabajo
*/
function archiveMaterialVehicle()
/**
* Desarchivar vehículo de trabajo
*/
function desarchiveMaterialVehicle()
/**
* Borrar vehículo de trabajo
*/
function deleteMaterialVehicle()
/**
* Modificar vehículo de trabajo
*
* @return array $jsondata Mensaje de notificación
*/
function editMaterialVehicle()
/**
* Metros totales de un vehículo en un rango de fechas
*
* @param int $id Id de vehículo
* @param string $from Fecha inicial (Y-m-d)
* @param string $to Fecha final (Y-m-d)
* @return int $metros Metros totales
*/
function getPaxsterDistance($id, $from, $to)
/**
* Lista de almacenes
*
* @param int $pag Página
* @param int $num Almacenes por página
* @param string $order Orden de listado
* @param int $del Eliminados (1) o Activos (0)
* @return array $data Listado de almacén
*/
function materialWarehousesList($pag, $num, $order, $del = 0)
/**
* Nuevo almacén
*
* @return array $jsondata Mensaje de notificación
*/
function addMaterialWarehouse()
/**
* Archivar almacén
*/
function archiveMaterialWarehouse()
/**
* Desarchivar almacén
*/
function desarchiveMaterialWarehouse()
/**
* Borrar almacén
*/
function deleteMaterialWarehouse()
/**
* Modificar almacén
*
* @return array $jsondata Mensaje de notificación
*/
function editMaterialWarehouse()
/**
* Obtener stock de un producto en un almacén
*
* @param int $warehouse_id Id de almacén
* @param int $material_id Id de material
* @return object $stock Stock
*/
function stockMaterialWarehouse($warehouse_id, $material_id)
/**
* Obtener stock de un producto en un vehículo
*
* @param int $vehicle_id Id de vehículo
* @param int $material_id Id de material
* @return object $stock Stock
*/
function stockMaterialVehicle($vehicle_id, $material_id)
/**
* Comprobar stock faltante de un producto en un almacén
*
* @param int $warehouse_id Id de almacén
* @param int $material_id Id de material
* @return int $falta Stock necesario
*/
function checkWarehouseProductStock($warehouse_id, $material_id)
/**
* Actualizar stock de almacén
*
* @return array $jsondata Mensaje de notificación
*/
function updateWarehouseStock()
/**
* Actualizar stock de un producto en un almacén
*
* @param int $warehouse_id Id de almacén
* @param int $material_id Id de material
* @param int $new_stock Nuevo stock
* @param int $add 1) Añadir al stock, 0) Stock nuevo
* @return array $jsondata Mensaje de notificación
*/
function updateWarehouseStockMaterial($warehouse_id = 0, $material_id = 0, $new_stock = 0, $add = 0)
/**
* Actualizar stock de vehículos desde almacén
*
* @return array $jsondata Mensaje de notificación
*/
function updateVehiclesStock()
/**
* Actualizar stock de un producto en un vehículo
*
* @param int $warehouse_id Id de almacén (si lo hay)
* @param int $material_id Id de material
* @param int $vehicle_id Id de vehículo
* @param int $new_stock Nuevo stock
* @param int $add 1) Añadir al stock, 0) Stock nuevo
* @return array $jsondata Mensaje de notificación
*/
function updateVehicleStockMaterial($warehouse_id = 0, $material_id = 0, $vehicle_id = 0, $new_stock = 0, $add = 0)
/**
* Comprobar gasto de stock
*
* @param int $paxter Id de paxter (0 para todos)
* @param int $product Id de material (0 para todos)
* @param string $from Desde
* @param string $to Hasta
* @return int $total Cantidad gastada
*/
function stockExpense($paxter, $product, $from, $to)
/**
* Servicios de una Paxter
*
* @param int $paxter Id de paxter
* @param string $from Desde
* @param string $to Hasta
* @return int $total Nº de servicios
*/
function vehicleWashes($paxter, $from, $to)
Funciones de noticias
functions_news.php
/**
* Nuevo departamento
*
* @return array $jsondata Mensaje de notificación
*/
function addNew()
/**
* Modificar imagen de noticia
*/
function editNewImage()
/**
* Modificar noticia
*
* @return array $jsondata Mensaje de notificación
*/
function editNew()
/**
* Borrar noticia
*/
function deleteNew()
Funciones de pedidos
functions_orders.php
/**
* Lista de pedidos
*
* @param int $pag Página
* @param int $num Pedidos por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de pedidos
*/
function ordersList($pag, $num, $order, $json = false)
/**
* Lista de pedidos entre fechas
*
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @param int $pag Página
* @param int $num Pedidos por página
* @return array $data Listado de pedidos
*/
function ordersListRange($from, $to, $pag, $num)
/**
* Lista de pedidos pagados
*
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @param int $f_id Id de franquicia (0 para todas)
* @return array $data Listado de pedidos
*/
function ordersPaidList($from, $to, $f_id = 0)
/**
* Lista de pedidos pagados paginados
*
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @param int $pag Página
* @param int $num Pedidos por página
* @param string $order Orden
* @param int $f_id Id de franquicia (0 para todas)
* @return array $data Listado de pedidos
*/
function ordersPaidListPag($from, $to, $pag, $num, $order, $f_id = 0)
/**
* Lista de pedidos sin pagar
*
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @return array $data Listado de pedidos
*/
function ordersUnpaidList()
/**
* Lista de pedidos de un cliente
*
* @param int $id Id de cliente
* @return array $data Listado de pedidos
*/
function customerOrders($id)
/**
* Lista de pedidos pendientes de configuración/pago
*
* @return array $data Listado de pedidos
*/
function ordersPendingList()
/**
* Número de pedidos pagados de un cliente
*
* @param int $id Id de cliente
* @return int $total Total de pedidos
*/
function totalCustomerOrders($id)
/**
* Obtener filtro de pedidos de usuario
*
* @return array $data Filtros
*/
function getOrderFilters()
/**
* Guardar filtro de pedidos de usuario
*/
function setOrderFilters()
/**
* Datos de pedido
*
* @param int $id Id de pedido
* @param boolean $json Si el resultado es json para ajax o no
* @return object $data Datos de pedido
*/
function getOrder($id, $json = false)
/**
* Importe total de un pedido calculando el importe de sus servicios
*
* @param int $id Id de pedido
* @return string $data Importe total con descuentos incluidos
*/
function orderTotalPrice($id)
/**
* Nº de servicios de un pedido
*
* @param int $id Id de pedido
* @return int $data Nº de servicios
*/
function orderCountWash($id)
/**
* Nuevo pedido
*
* @return array $jsondata Mensaje de notificación
*/
function addOrder()
/**
* Nuevo pedido web
*
* @return array $id Id de nuevo pedido
*/
function addOrderWeb()
/**
* Asociar pedido con suscripción
*
* @param int $order_id Id de pedido
* @param int $subs_id Id de suscripción
*/
function orderSetSubscription($order_id, $subs_id)
/**
* Modificar pedido
*
* @return array $jsondata Mensaje de notificación
*/
function editOrder()
/**
* Modificar datos de facturación de pedido
*
* @return array $jsondata Mensaje de notificación
*/
function editOrderInvoiceAddress()
/**
* Cambiar estado de pedido
*
* @param int $order Id de pedido
* @param int $status Id de estado
* @param bool $email Enviar email
*/
function setOrderStatus($order = false, $status = false)
/**
* Obtener mail de contacto de un pedido
*
* @param int $order Id de pedido
* @return string $mail Mail de contacto
*/
function getOrderMail($order)
/**
* Obtener teléfono de contacto de un pedido
*
* @param int $order Id de pedido
* @return string $phone Teléfono de contacto
*/
function getOrderPhone($order)
/**
* Enviar WhatsApp de info de pago
*
* @param int $order Id de pedido
* @param int $campo Campo de tipo de pago
*/
function sendPayLink($order = false, $campo = false)
/**
* Borrar pedido
*
* @param int $id Id de pedido
*/
function deleteOrder($id = false)
/**
* Comprobar estado actual de un pedido
*
* @param int $id Id de pedido
* @return object $data Info de estado
*/
function checkOrderStatus($id)
Funciones de pedidos pendientes
functions_orders_pending.php
/**
* Generar/Modificar pedido pendiente
*
* @return array $id Id de nuevo pedido
*/
function updatePendingOrder()
/**
* Generar/Modificar servicio de pedido pendiente
*
* @return array $id Id de nuevo pedido
*/
function updatePendingWash()
Funciones de packs
functions_packs.php
/**
* Lista de packs
*
* @param int $pag Página
* @param int $num Packs por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de packs
*/
function packsList($pag, $num, $order, $json = false)
/**
* Listado de meses disponibles para suscripciones
*
* @return array $data Distinto nº de meses
*/
function packsMonths()
/**
* Datos de pack
*
* @param int $id Id de pack
* @return array $data Datos de pack
*/
function getPack($id)
/**
* Nuevo pack
*
* @return array $jsondata Mensaje de notificación
*/
function addPack()
/**
* Modificar pack
*
* @return array $jsondata Mensaje de notificación
*/
function editPack()
/**
* Modificar imagen de pack
*/
function editPackImage()
/**
* Borrar pack
*/
function deletePack()
/**
* Guardar combinación de pack
*
* @return array $jsondata Mensaje de notificación
*/
function savePackCombination()
/**
* Datos de combinación
*
* @param int $id Id de combinación
* @return array $data Datos de combinación
*/
function getCombination($id)
/**
* Obtener combinaciones por nº de servicios
*
* @param int $num Nº de servicios
* @return array $data Combinaciones
*/
function getCombinationsByWashes($num)
/**
* Obtener servicios de combinación
*
* @param int $id ID de combinación
* @param bool $group Agrupado por ID si/no
* @param bool $json Formato json si/no
* @return array $data Servicios de la combinación
*/
function getCombinationWashes($id = 0, $group = false, $json = false)
/**
* Obtener servicios de combinación con precios
*
* @param int $id ID de combinación
* @param int $vehicle ID de vehículo
* @param int $rate Tarifa
* @param int $pay_discount Pronto pagp
* @param bool $json Formato json si/no
* @return array $data Servicios de la combinación
*/
function getCombinationWashesPrice($id = 0, $vehicle = 0, $rate = 0, $pay_discount = 0, $json = false)
/**
* Guardar orden de servicios de combinación
*/
function savePackCombinationOrder()
/**
* Borrar combinación
*/
function deletePackCombination()
Funciones de paginador
functions_paginator.php
/**
* Cargar contador del paginador
*
* @param string $table Tabla de los registros a contar
* @param int $num Nº de registros por página
* @return object $data Total de registros y total de páginas
*/
function paginator_config($table, $num)
/**
* Paginador HTML
*
* @param int $pages Total de páginas
* @param int $pag Página actual
* @return string $return Elemento nav
*/
function paginator_html($pages, $pag)
Funciones de solucionador de problemas
functions_problems.php
/**
* Lista de problemas
*
* @param int $pag Página
* @param int $num Problemas por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de problemas
*/
function problemsList($pag, $num, $order, $json = false)
/**
* Lista de problemas para la web
*
* @param string $lang Código de idioma
* @return array $data Listado de problemas
*/
function problemsWebList($lang = 'es')
/**
* Datos de problema
*
* @param int $id Id de problema
* @return array $data Datos de problema
*/
function getProblem($id)
/**
* Datos de problema en un idioma
*
* @param int $id Id de problema
* @param string $lang Idioma
* @return array $data Datos de problema
*/
function getProblemTranslate()
/**
* Modificar traducción de problema
*
* @return array $jsondata Mensaje de notificación
*/
function editProblemTranslate()
/**
* Nuevo problema
*
* @return array $jsondata Mensaje de notificación
*/
function addProblem()
/**
* Modificar problema
*
* @return array $jsondata Mensaje de notificación
*/
function editProblem()
/**
* Borrar problema
*/
function deleteProblem()
/**
* Guardar opción de solución
*
* @return array $jsondata Mensaje de notificación
*/
function saveProblemSolution()
/**
* Borrar opcpión de solución
*/
function deleteProblemSolution()
/**
* Buscar soluciones según tamaño y necesidades
*
* @param int $size Id de tamaño
* @param string $needs Necesidades
* @param int $rate Id de tarifa
* @param string $coupon Cupón
* @param string $lang Código de idioma
* @return array $data Soluciones
*/
function getSolutionsbyProblem($size, $needs, $rate, $coupon, $lang = 'es')
/**
* Obtener tiempo/precio de solución
*
* @return array $data Tiempo y precio total
*/
function getPriceTimeSolution($products, $size, $rate = 0, $coupon = '')
Funciones de productos
functions_products.php
/**
* Lista de productos
*
* @param int $pag Página
* @param int $num Productos por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de productos
*/
function productsList($pag, $num, $order, $json = false)
/**
* Obtener filtro de productos
*
* @return array $data Filtros
*/
function getProductsFilters()
/**
* Guardar filtro de productos
*/
function setProductsFilters()
/**
* Lista de productos internos
*
* @return array $data Listado de productos
*/
function productsListInternal()
/**
* Datos de producto
*
* @return array $data Datos de producto
*/
function getProduct($id)
/**
* Datos de producto en un idioma
*
* @param int $id Id de producto
* @param string $lang Idioma
* @return array $data Datos de producto
*/
function getProductTranslate()
/**
* Modificar traducción de producto
*
* @return array $jsondata Mensaje de notificación
*/
function editProductTranslate()
/**
* Lista de productos principales
*
* @return array $data Listado de productos principales
*/
function productsMainList()
/**
* Lista de productos principales disponibles en la web
*
* @param string $lang Idioma
* @return array $data Listado de productos
*/
function productsMainWebList($lang = 'es')
/**
* Lista de complementos
*
* @return array $data Listado de complementos
*/
function complementsList()
/**
* Lista de complementos de un producto disponibles en la web
*
* @param string $lang Idioma
* @return array $data Listado de complementos
*/
function productComplementsWebList($id, $lang = 'es')
/**
* Tabla de complementos para web
*
* @return array $data Listado de complementos
*/
function complementsTable()
/**
* Modificar campo web de un complemento
*/
function editComplementWeb()
/**
* Lista de productos según vehículo
*
* @return array $data Listado de productos
*/
function loadProductsByVehicle()
/**
* Lista de productos según tamaño de vehículo
*
* @param int $size Id de tamaño
* @return array $data Listado de productos
*/
function loadProductsByVehicleSize($size)
/**
* Lista de productos disponibles en la web según marca/modelo
*
* @param string $marca Marca
* @param string $modelo Modelo
* @return array $data Listado de productos/precios/tiempos
*/
function loadVehicleProducts($marca, $modelo)
/**
* Lista de complementos según producto y vehículo
*
* @return array $data Complementos relacionados
*/
function loadComplementsByProduct()
/**
* Lista de complementos según producto y tamaño
*
* @param int $product Id de producto
* @param int $size Id de tamaño
* @return array $data Complementos relacionados
*/
function loadComplementsByProductandSize($product, $size)
/**
* Obtener media de tiempo y total de productos según producto y tamaño
*
* @param int $product Id de producto
* @param int $size Id de tamaño
* @param string $from Desde
* @param string $to Hasta
* @return object $data Media y total
*/
function averageProductSizeTime($product, $size, $from, $to)
/**
* Obtener valores de variación de producto
*
* @param int $product Id de producto
* @param int $size Id de tamaño
* @param string $lang Código de idioma
* @return object $data Datos de la variación
*/
function get_variable_data($product, $size, $lang = 'es')
/**
* Obtener complementos relacionados de un producto
*
* @param int $product Id de producto
* @return object $data Complementos relacionados
*/
function get_complements_product($product)
/**
* Obtener tiempo/precio de productos según tamaño y cantidad
*
* @return object $data Tiempo y precio total
*/
function getPriceTimeProduct()
/**
* Nuevo producto
*
* @return array $jsondata Mensaje de notificación
*/
function addProduct()
/**
* Nuevo producto interno
*
* @return array $jsondata Mensaje de notificación
*/
function addInternalProduct()
/**
* Modificar producto
*
* @return array $jsondata Mensaje de notificación
*/
function editProduct()
/**
* Modificar imagen de producto
*/
function editProductImage()
/**
* Modificar precio de variación
*/
function editVariationField()
/**
* Borrar producto
*/
function deleteProduct()
Funciones de log de registro de acciones
functions_registers.php
/**
* Lista de registros
*
* @param int $pag Página
* @param int $num Registros por página
* @param string $order Orden de listado
* @return array $data Listado de registros
*/
function registersList($pag, $num, $order)
/**
* Obtener filtro de registros
*
* @return array $data Filtros
*/
function getRegisterFilters()
/**
* Guardar filtro de registros
*/
function setRegisterFilters()
Funciones de informe final de servicios
functions_reports.php
/**
* Lista de informes
*
* @param int $pag Página
* @param int $num Informes por página
* @param string $order Orden de listado
* @param int $f_id Id de franquicia
* @param int $p_id Id de Plazier
* @param string $from Desde
* @param string $to Hasta
* @return array $data Listado de informes
*/
function reportsList($pag, $num, $order, $f_id = 0, $p_id = 0, $from = '', $to = '')
/**
* Lista de informes de un Plazier
*
* @param int $pag Página
* @param int $num Informes por página
* @param int $id ID de Plazier
* @return array $data Listado de informes
*/
function plazierReportsList($pag, $num, $id)
/**
* Datos de cada día para facturación comercial
*
* @param string $date Fecha
* @param int $f_id Id de franquicia
* @return array $data Datos del día
*/
function getReportComercialDay($date, $f_id = 0)
/**
* Obtener reseña de servicio
*
* @param int $id Id de servicio
*/
function getWashReview($id)
/**
* Guardar nota de desempeño en servicio
*
* @param int $id Id de servicio
*/
function setWashRating($id)
/**
* Guardar nota de desempeño manualmente
*/
function setWashRatingManual()
/**
* Calcular desempeño de informes antiguos
*
* @param int $id Id de servicio
* @param int $diff % de diferencia de tiempo estimado/real
* @return float $des Desempeño
*/
function get_total_report_old($id, $diff)
/**
* Calcular desempeño de informes nuevos
*
* @param int $id Id de servicio
* @param int $diff % de diferencia de tiempo estimado/real
* @param int $report Estado de informe de Plazier (0 sin enviar / 1 o 2 enviado)
* @param object $rating Informe de cliente
* @return float $des Desempeño
*/
function get_total_report_new($id, $diff, $report, $rating)
/**
* Puntuación media de los servicios de un cliente
*
* @param int $id Id de cliente
* @return float $data Puntuación media
*/
function getUserRating($id)
/**
* Total de servicios y puntuación media de los servicios de un Plazier
*
* @param int $id Id de plazier
* @return array $data Servicios y Puntuación media
*/
function getEmployeeRating($id)
/**
* Lista de reseñas
*
* @param int $pag Página
* @param int $num Informes por página
* @param string $order Orden de listado
* @param int $view Estado (1 resueltas / 0 sin resolver)
* @param int $f_id Id de franquicia (0 para todas)
* @param string $from Desde
* @param string $to Hasta
* @return array $data Listado de reseñas
*/
function reviewsList($pag, $num, $order, $view = 2, $f_id = 0, $from = false, $to = false)
/**
* Añadir reseña
*/
function addReview()
/**
* Reseñas sin leer
*
* @return int $data Nº de reseñas
*/
function reviewsPending()
/**
* Resumen de encuestas para el informe de servicios
*
* @param string $from Desde
* @param string $to Hasta
* @param int $f_id Id de franquicia (0 para todas)
* @return array $data Total de encuestas enviadas, recibidas y nota media
*/
function getReportsRating($from, $to, $f_id = 0)
/**
* Obtener nº de votaciones por campo/valor
*
* @param string $field Nombre del campo
* @param int $value Valor
* @param string $from Desde
* @param string $to Hasta
* @return array $data Total y porcentaje
*/
function getRatingByFieldVal($field, $value, $from, $to)
/**
* Resumen para el informes de recomendaciones
*
* @param string $from Desde
* @param string $to Hasta
* @param int $f_id Id de franquicia (0 para todas)
* @return array $data Porcentaje de positivos, neutros y negativos
*/
function getReportsRecommends($from, $to, $f_id = 0)
/**
* Marcar reseña como resuelta
*/
function setRatingView()
/**
* Añadir resolución de reseña
*/
function addRatingResponse()
/**
* Lista de informes pendientes
*
* @param int $status Id de estado (1 para pendientes de plazier, 2 para pendientes y no finalizados)
* @param string $date Fecha mínima Y-m-d
* @param int $plazier Id de empleado
* @return array $data Listado de informes
*/
function reportsPendingList($status, $date = false, $plazier = false)
/**
* Obtener filtro de informes de usuario
*
* @return array $data Filtros
*/
function getReportsFilters()
/**
* Guardar filtro de informes de usuario
*
* @param int $p_id Id de Plazier
* @param int $f_id Id de franquicia
* @param string $from Desde
* @param string $to Hasta
*/
function setReportsFilters($p_id = 0, $f_id = 0, $from = '', $to = '')
/**
* Lista de incidencias
*
* @param int $pag Página
* @param int $num Incidencias por página
* @param string $order Orden de listado
* @return array $data Listado de incidencias
*/
function incidencesList($pag, $num, $order)
/**
* Lista de incidencias computables a un Plazier
*
* @param int $pag Página
* @param int $num Incidencias por página
* @param string $order Orden de listado
* @param int $id Id de Plazier
* @return array $data Listado de incidencias
*/
function incidencesListPlazier($pag, $num, $order, $id)
/**
* Obtener filtro de informes de incidencias
*
* @return array $data Filtros
*/
function getIncidenceFilters()
/**
* Guardar filtro de informes de incidencias
*
* @param int $p_id Id de Plazier
* @param int $f_id Id de franquicia
* @param string $from Desde
* @param string $to Hasta
*/
function setIncidenceFilters($p_id = 0, $f_id = 0, $from = '', $to = '')
/**
* Borrar incidencia
*
* @param int $id Id de incidencia
*/
function deleteIncidence($id = 0)
/**
* Incidencias de Plazier entre fechas
*
* @param int $id Id de Plazier (0 para todos)
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @param string $incidence Tipo de incidencia (0 para todos)
* @return int $data Total de incidencias
*/
function plazierTotalIncidences($id = 0, $from = '', $to = '', $incidence = '')
/**
* Listado de informes de material
*
* @param int $pag Página
* @param int $num Informes por página
* @param string $order Orden de listado
* @return array $data Listado de informes
*/
function materialReportsList($pag, $num, $order)
/**
* Obtener filtro de informes de material
*
* @return array $data Filtros
*/
function getMaterialFilters()
/**
* Guardar filtro de informes de material
*/
function setMaterialFilters()
/**
* Obtener filtro de informes de retrasos
*
* @return array $data Filtros
*/
function getDelayFilters()
/**
* Guardar filtro de informes de retrasos
*
* @param int $f_id Id de franquicia
* @param int $p_id Id de Plazier
* @param string $from Desde
* @param string $to Hasta
*/
function setDelayFilters($f_id = 0, $p_id = 0, $from = '', $to = '')
/**
* Lista de servicios para informe de retrasos
*
* @param int $pag Página
* @param int $num Servicios por página
* @param string $order Orden de listado
* @return array $data Listado de servicios
*/
function washesListDelays($pag, $num, $order)
/**
* Retraso medio entre fechas
*
* @param int $id Id de Plazier
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @param int $f_id Id de franquicia
* @return array $data Nota media y total de servicios
*/
function plaziersDelayAverage($id, $from = '', $to = '', $f_id = 0)
/**
* Total de invitaciones y cupones de un Plazier en un rango
*
* @param int $id Id de Plazier
* @param string $date_from Fecha inicial
* @param string $date_to Fecha final
* @return array $data Totales
*/
function plazierInvitationsReports($id, $date_from, $date_to)
/**
* Medias de tiempos de ruta/espera/servicio entre fechas
*
* @param string $from Desde
* @param string $to Hasta
* @param int $f_id Id de franquicia
* @return array $data Totales
*/
function average_times_report($from, $to, $f_id = 0)
/**
* Reservas de un servicio un día
*
* @param string $day Día
* @param string $servicio Servicio
* @return int $num Total de reservas
*/
function serviceReportsByProductDay($day, $servicio)
/**
* Guardar filtro de informes de cupones
*
* @param int $c_id Id de cupón
* @param int $f_id Id de franquicia
* @param string $from Desde
* @param string $to Hasta
*/
function setCouponsReportsFilters($c_id = 0, $f_id = 0, $from = '', $to = '')
/**
* Obtener filtro de informes de cupones
*
* @return array $data Filtros
*/
function getCouponsReportsFilters()
/**
* Lista de informes de cupones
*
* @param int $pag Página
* @param int $num Informes por página
* @param string $order Orden de listado
* @param int $f_id Id de franquicia
* @param int $c_id Id de cupón
* @param string $from Desde
* @param string $to Hasta
* @return array $data Listado de informes
*/
function couponsReportsList($pag, $num, $order, $f_id = 0, $c_id = 0, $from = '', $to = '')
/**
* Guardar filtro de informes de invitaciones
*
* @param int $p_id Id de Plazier
* @param int $f_id Id de franquicia
* @param string $from Desde
* @param string $to Hasta
*/
function setInvitationsReportsFilters($p_id = 0, $f_id = 0, $from = '', $to = '')
/**
* Obtener filtro de informes de invitaciones
*
* @return array $data Filtros
*/
function getInvitationsReportsFilters()
/**
* Lista de informes de invitaciones
*
* @param int $pag Página
* @param int $num Informes por página
* @param string $order Orden de listado
* @param int $f_id Id de franquicia
* @param int $p_id Id de Plazier
* @param string $from Desde
* @param string $to Hasta
* @return array $data Listado de informes
*/
function invitationsReportsList($pag, $num, $order, $f_id = 0, $p_id = 0, $from = '', $to = '')
/**
* Guardar filtro de informes de tiempos
*
* @param int $f_id Id de franquicia
* @param string $from Desde
* @param string $to Hasta
*/
function setTimesReportsFilters($f_id = 0, $from = '', $to = '')
/**
* Obtener filtro de informes de tiempos
*
* @return array $data Filtros
*/
function getTimesReportsFilters()
Funciones de cálculo de rutas
functions_routes.php
/**
* Calcular horas disponibles para un servicio a partir de una fecha.
* Listado completo indicando Plazier.
*
* @return string $data Html con las horas disponibles
*/
function gmaps_route()
/**
* Calcular horas disponibles para un servicio a partir de una fecha.
* Se devuelve el array filtrado y ordenado.
*
* @param int $cp CP
* @param int $zone Zona
* @param string $direccion Dirección
* @param int $parking Tipo de parking
* @param int $wash_time Minutos de servicio
* @param string $date_from Fecha inicial
* @param string $date_to Fecha final
* @param int $product Id de producto
* @return array $data Horas disponibles
*/
function gmaps_route_web($cp_num, $zone, $direccion, $parking, $wash_time, $date_from, $date_to)
/**
* Calcular horas disponibles para un servicio a partir de una fecha.
* Listado ordenado y sin duplicados sin mostrar Plaziers.
*
* @return string $data Html con las horas disponibles
*/
function gmaps_route_empresa()
/**
* Devolver primera hora disponible para un servicio a partir de una fecha
*
* @param int $city Ciudad
* @param int $cp CP
* @param string $address Dirección
* @param int $parking Tipo de parking
* @param int $wash_time Minutos de servicio
* @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)
/**
* Devolver primera hora disponible de un Plazier para un servicio a partir de una fecha
*
* @param int $plazier Id de Plazier
* @param int $city Ciudad
* @param int $cp CP
* @param string $address Dirección
* @param int $parking Tipo de parking
* @param int $wash_time Minutos de servicio
* @param string $date_from Fecha inicial
* @param int $days Nº de días a buscar
* @param int $panhos Si es servicio de paños
* @return array $data Información de hueco
*/
function gmaps_route_first_plazier($plazier, $city, $cp, $address, $parking, $wash_time, $date_from, $days, $panhos = 0)
/**
* Tiempo de trayecto entre dos puntos
*
* @param string $dir1 Dirección de origen
* @param string $dir2 Dirección de destino
* @param int $time Fecha y hora en formato strtotime
* @param int $highways Acceso a autopistas
* @return int $data Minutos
*/
function gmaps_distance_api($dir1, $dir2, $time, $highways = 0)
/**
* Recalcular rutas de servicios del plazier en el día
*
* @param string $plazier ID de plazier
* @param string $date Fecha Y-m-d
*/
function calculateRoutes($plazier, $date)
/**
* Calcular huecos/horas disponibles en agenda para un servicio
*
* @param string $cp Código postal
* @param string $address Dirección
* @param int $wash_time Minutos del servicio
* @param string $date_from Fecha de inicio
* @param boolean $sort Ordenar y eliminar duplicados
* @param int $plazier_id Buscar solo en la agenda de un Plazier por ID
* @param string $min Hora mínima H:i
* @return string $data Html con las horas disponibles
*/
function gmaps_route_v2($cp, $address, $wash_time, $date_from, $sort, $plazier_id = 0, $min = 0)
/**
* Huecos disponibles de un Plazier un día
*
* @param string $date Día Y-m-d
* @param int $num_w Nº de día de la semana
* @param int $plazier ID de Plazier
* @param int $wash_time Minutos necesarios
* @param string $address Dirección de servicio
* @param int $limit Tiempo máximo de ruta
* @param string $min Hora mínima H:i
* @return array $free Huecos disponibles
*/
function huecos_dia_plazier($date, $num_w, int $plazier, int $wash_time, $address, $limit, $min)
Funciones de control horario
functions_schedule_control.php
/**
* Lista de jornadas
*
* @param int $pag Página
* @param int $num Jornadas por página
* @param string $order Orden de listado
* @return array $data Listado de jornadas
*/
function timeControlList($pag, $num, $order)
/**
* Obtener filtro de jornadas
*
* @return array $data Filtros
*/
function getTimeControlFilters()
/**
* Guardar filtro de jornadas
*/
function setTimeControlFilters()
/**
* Comprobar si se inició jornada de Plazier en un día
*
* @param int $id Id de usuario
* @param string $fecha Fecha
*/
function check_plazier_schedule_control($id, $fecha)
/**
* Actualizar jornada
*/
function update_schedule_control()
/**
* Actualizar hora de preparación
*/
function update_schedule_preparation()
/**
* Iniciar ruta de vuelta
*
* @param int $id Id de registro
*/
function update_schedule_garage_start($id = 0)
/**
* Finalizar ruta de vuelta
*/
function update_schedule_garage_finish()
/**
* Modificar tiempo de fichaje
*/
function editTimeControl()
/**
* Obtener bolsa de horas de Plazier
*
* @param int id Id de Plazier
*/
function getUserControlTime($id)
Funciones de búsquedas
functions_search.php
/**
* Búsqueda general
*
* @return string $data Listado de resultados
*/
function search()
/**
* Buscar en tabla
*
* @return string $data Listado de resultados
*/
function search_table()
Funciones de barras laterales
functions_sidebars.php
/**
* Sidebar de favoritos
*
* @return string $data Listado de favoritos
*/
function reloadFixedSidebar()
/**
* Sidebar de alertas pendientes
*
* @return string $data Listado de alertas
*/
function reloadAlertSidebar()
/**
* Añadir/Modificar favorito
*
* @return array $jsondata Mensaje de notificación
*/
function saveBookmark()
/**
* Borrar favorito
*/
function deleteBookmark()
/**
* Comprobar si hay alertas pendientes con fecha de hoy o ya pasada
*
* @return int $data Número de alertas pendientes
*/
function check_alerts()
/**
* Listado de alertas
*
* @param int $pag Página actual
* @param int $num Número de registros por página
* @param string $order Orden
* @param boolean $json Respuesta en json si/no
* @return array $data Array de alertas
*/
function alerts_list($pag, $num, $order, $json = false)
/**
* Número de alertas del usuario actual
*
* @param int $id Id de usuario
* @return array $data Número de alertas
*/
function count_user_alerts()
/**
* Alerta por ID
*
* @param int $id Id de la alerta
* @return object $data Objeto de alerta
*/
function getAlert($id)
/**
* Alerta por ID (por Post)
*
* @return object $data Objeto de alerta
*/
function getAlertJson()
/**
* Nueva alerta
*
* @return array $jsondata Mensaje de notificación
*/
function addAlert()
/**
* Modificar alerta
*
* @return array $jsondata Mensaje de notificación
*/
function editAlert()
/**
* Marcar/Desmarcar alerta
*/
function checkAlert()
/**
* Borrar alerta
*/
function deleteAlert()
Funciones de suscripciones
functions_subscriptions.php
/**
* Lista de suscripciones
*
* @param int $pag Página
* @param int $num Suscripciones por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de suscripciones
*/
function subscriptionsList($pag, $num, $order, $json = false)
/**
* Obtener filtro de suscripciones de usuario
*
* @return array $data Filtros
*/
function getSubscriptionsFilters()
/**
* Guardar filtro de suscripciones de usuario
*/
function setSubscriptionsFilters()
/**
* Datos de suscripción
*
* @param int $id Id de suscripción
* @param boolean $json Si el resultado es json para ajax o no
* @return object $data Datos de suscripción
*/
function getSubscription($id = false, $json = false)
/**
* Nueva suscripción
*
* @return array $jsondata Mensaje de notificación
*/
function addSubscription()
/**
* Generar suscripción web
*
* @return int $subs_id Id de nueva suscripción
*/
function createSubscription()
/**
* Generar servicio de suscripción
*
* @return int $wash_id Id de nuevo servicio
*/
function createWashSubscription()
/**
* 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 addSubscriptionFee($subs_id, $fee, $date, $cron = 0)
/**
* Obtener suscripciones de cliente
*
* @param int $id ID de cliente
* @return array $data Datos de suscripciones
*/
function getUserSubscriptions($id)
/**
* Obtener primera cuota de suscripción
*
* @param int $subs_id ID de suscripción
* @return object $data Datos de cuota
*/
function get_subscription_first_fee($subs_id, $cron = 0)
/**
* Obtener primera cuota sin pagar de suscripción
*
* @param int $subs_id ID de suscripción
* @return object $data Datos de cuota
*/
function get_subscription_next_fee($subs_id, $paid = 0)
/**
* Pausar/Reactivar suscripción
*/
function pauseSubscription()
/**
* Cancelar suscripción
*/
function cancelSubscription()
/**
* Borrar suscripción
*/
function deleteSubscription()
Funciones de gestión de archivos
functions_uploads.php
/**
* Subir archivo
*
* @param string $folder Directorio de subida
* @param string $filename Nombre del archivo
* @param string $file_temp Nombre temporal del input tipo file
* @param int $filesize Tamaño del archivo
* @param int $maxsize Tamaño máximo aceptado
* @return string $ruta Ruta final del archivo
*/
function file_subir($folder, $filename, $file_temp, $filesize, $maxsize)
/**
* Subir imagen
*
* @param string $filename Nombre del archivo
* @param string $file_temp Nombre temporal del input tipo file
* @param string $file_ext Extensión del archivo
* @param int $filesize Tamaño del archivo
* @param int $multiple Subida múltiple de archivos si (1) no (0)
* @return string $data Nombre final del archivo
*/
function imagen_subir($filename, $file_temp, $file_ext, $filesize, $multiple = 0)
/**
* Rotar imagen
*
* @param int $orientacion Identificador de orientación
* @param resource $lienzo Imagen original
* @return resource $lienzo Imagen tras rotación
*/
function rotar_imagen($orientacion, $lienzo)
/**
* Generar miniatura
*
* @param string $size Tamaño de la miniatura
* @param string $filename Nombre del archivo
*/
function miniatura($size, $filename)
/**
* Buscar imagen en internet
*
* @param string $search Cadena a buscar
* @param string $filename Nombre de archivo
*/
function searchImageAPI($search, $filename)
Funciones de usuarios
functions_users.php
/**
* Lista de usuarios
*
* @param int $pag Página
* @param int $num Usuarios por página
* @param string $order Orden de listado
* @param int $del Archivados (1) o Activos (0)
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de usuarios
*/
function usersList($pag, $num, $order, $del = 0, $json = false)
/**
* Datos de usuario por Id
*
* @param int $id Id de usuario
* @return array $data Datos de usuario
*/
function getUser($id)
/**
* Datos de usuario por email
*
* @param string $email Email de usuario
* @return Datos de usuario
*/
function getUserByEmail($email)
/**
* Nuevo usuario
*
* @return array $jsondata Mensaje de notificación
*/
function addUser()
/**
* Modificar usuario
*
* @return array $jsondata Mensaje de notificación
*/
function editUser()
/**
* Modificar imagen de perfil
*/
function editProfileImage()
/**
* Comprobar disponibilidad de email
*
* @param int $id Id de usuario (enviar 0 si es un nuevo usuario)
* @param string $username Nuevo correo
* @return boolean Si el email es válido
*/
function checkAvailableUserEmail($id, $username)
/**
* Validar contraseña de usuario
*
* @param int $id Id de usuario
* @param string $password Contraseña
* @return boolean Si la contraseña es correcta
*/
function checkValidPassword($id, $password)
/**
* Archivar usuario
*/
function archiveUser()
/**
* Desarchivar usuario
*/
function desarchiveUser()
/**
* Borrar usuario
*/
function deleteUser()
/**
* Lista de roles
*
* @param int $pag Página
* @param int $num Roles por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de roles
*/
function rolesList($pag, $num, $order, $json = false)
/**
* Nuevo rol de usuario
*
* @return array $jsondata Mensaje de notificación
*/
function addRole()
/**
* Modificar icono de rol
*/
function editRoleImage()
/**
* Modificar rol de usuario
*
* @return array $jsondata Mensaje de notificación
*/
function editRole()
/**
* Comprobar permisos de rol
*
* @param string $access Acceso
* @param int $id Id de rol
*/
function checkRoleAccess($access, $id = false)
/**
* Usuarios asignados a un rol
*
* @param int $id Id de rol
* @return int $data Nº de usuarios
*/
function rolTotalUsers($id)
/**
* Borrar rol de usuario
*/
function deleteRole()
/**
* Comprobar si el usuario actual es de Central
*
* @param int $id Id de vehículo de usuario
* @return array $data Info de servicio
*/
function isCentral()
Funciones de vehículos
functions_vehicles.php
/**
* Lista de modelos
*
* @param int $pag Página
* @param int $num Registros por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de modelos
*/
function vehiclesList($pag, $num, $order, $json = false)
/**
* Datos de vehículo
*
* @param int $id Id de vehículo
* @return array $data Datos de vehículo
*/
function getVehicle($id)
/**
* Nombre de vehículo por Id de modelo
*
* @param int $id Id de modelo.
* @return string $name Nombre completo
*/
function getVehicleName($id)
/**
* Lista de modelos y tamaños
*
* @return array $data Listado de modelos
*/
function vehiclesListSizes()
/**
* Lista de modelos de una marca
*
* @param int $id Id de marca
* @param int $pag Página
* @param int $num Registros por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de modelos
*/
function vehiclesListbyCompany($id, $pag, $num, $order, $json = false)
/**
* Lista de modelos de una marca para rellenar select
*
* @param int $company Id de marca
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de modelos
*/
function loadVehiclesByCompany($company = 0, $json = true)
/**
* Lista de modelos de una marca para rellenar select en la web,
* solo se cargan los modelos que tengan precio para los 4 servicios principales o que sean de una categoría distinta a vehículos
*
* @param int $company Id de marca
* @return array $data Listado de modelos
*/
function loadVehiclesByCompanyWeb($company)
/**
* Lista de marcas
*
* @param int $pag Página
* @param int $num Registros por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de marcas
*/
function vehiclesCompaniesList($pag, $num, $order, $json = false)
/**
* Obtener filtro de marcas
*
* @return array $data Filtros
*/
function getCompaniesFilters()
/**
* Guardar filtro de marcas
*/
function setCompaniesFilters()
/**
* Datos de marca
*
* @param int $id Id de marca
* @return array $data Datos de marca
*/
function getCompany($id)
/**
* Lista de colores
*
* @param int $pag Página
* @param int $num Registros por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @param string $lang Código de idioma
* @return array $data Listado de colores
*/
function colorsList($pag, $num, $order, $json = false, $lang = 'es')
/**
* Lista de tamaños
*
* @param int $pag Página
* @param int $num Registros por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de tamaños
*/
function sizesList($pag, $num, $order, $json = false)
/**
* Nuevo color
*
* @return array $jsondata Mensaje de notificación
*/
function addColor()
/**
* Modificar color
*
* @return array $jsondata Mensaje de notificación
*/
function editColor()
/**
* Datos de color en un idioma
*
* @param int $id Id de producto
* @param string $lang Idioma
* @return array $data Datos de servicio
*/
function getColorTranslate()
/**
* Modificar traducción de color
*
* @return array $jsondata Mensaje de notificación
*/
function editColorTranslate()
/**
* Borrar color
*/
function deleteColor()
/**
* Nuevo tamaño
*
* @return array $jsondata Mensaje de notificación
*/
function addSize()
/**
* Modificar icono de tamaño
*/
function editSizeImage()
/**
* Modificar tamaño
*
* @return array $jsondata Mensaje de notificación
*/
function editSize()
/**
* Borrar tamaño
*/
function deleteSize()
/**
* Modificar tamaño de un modelo
*/
function editVehicleSize()
/**
* Obtener tamaño de un servicio
*
* @param int id Id de servicio
*/
function getWashSize($id)
/**
* Nueva marca
*
* @return array $jsondata Mensaje de notificación
*/
function addCompany()
/**
* Modificar logotipo de marca
*/
function editCompanyImage()
/**
* Modificar marca
*
* @return array $jsondata Mensaje de notificación
*/
function editCompany()
/**
* Borrar marca
*/
function deleteCompany()
/**
* Nuevo modelo
*
* @return array $jsondata Mensaje de notificación
*/
function addVehicle()
/**
* Modificar modelo
*
* @return array $jsondata Mensaje de notificación
*/
function editVehicle()
/**
* Borrar modelo
*/
function deleteVehicle()
/**
* Obtener filtro de modelos
*
* @return array $data Filtros
*/
function getVehiclesFilters()
/**
* Guardar filtro de modelos
*/
function setVehiclesFilters()
/**
* Listado de vehículos con servicios
*/
function distinctWashesVehicles()
Funciones de servicios
functions_washes.php
/**
* Lista de servicios
*
* @param int $pag Página
* @param int $num Servicios por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de servicios
*/
function washesList($pag, $num, $order, $json = false)
/**
* Lista de servicios finalizados con ruta estimada
*
* @param int $pag Página
* @param int $num Servicios por página
* @param string $order Orden de listado
* @param string $from Desde
* @param string $to Hasta
* @param int $f_id Id de franquicia
* @return array $data Listado de servicios
*/
function washesListRoutes($pag, $num, $order, $from = false, $to = false, $f_id = 0)
/**
* Lista de servicios sin finalizar de días anteriores
*
* @return array $data Listado de servicios
*/
function washesPendingList()
/**
* Lista de servicios entre fechas
*
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @param int $id Id de Plazier (0 para todos)
* @param array $status Ids de estados (0 par todos)
* @return array $data Listado de servicios
*/
function washesListRange($from, $to, $id = 0, $status = 0)
/**
* Lista de servicios generados entre fechas
*
* @param string $from Fecha desde
* @param string $to Fecha hasta
* @param int $pag Página
* @param int $num Servicios por página
* @param string $order Orden
* @return array $data Listado de servicios
*/
function washesListCreatedRange($from, $to, $pag, $num, $order)
/**
* Obtener filtro de servicios de usuario
*
* @return array $data Filtros
*/
function getWashFilters()
/**
* Guardar filtro de servicios de usuario
*/
function setWashFilters()
/**
* Lista de servicios en un día
*
* @param string $date Fecha Y-m-d
* @param int $plazier Id de plazier
* @return array $data Listado de servicios
*/
function washesTodayList($date, $plazier = false)
/**
* Lista de servicios en un mes (añadiendo un mes antes y después)
*
* @param string $date Fecha Y-m
* @param int $plazier Id de plazier
* @param boolean $finished Solo finalizados si/no
* @return array $data Listado de servicios
*/
function washesMonthList($date = false, $plazier = false, $finished = false)
/**
* Lista de servicios en una semana
*
* @param string $date Fecha Y-m-d H:i:s
* @param string $limit IDs de plaziers a excluir
* @return array $data Listado de servicios
*/
function washesWeekList($date = false, $limit = '')
/**
* Lista de servicios de un cliente
*
* @param int $id Id de cliente
* @return array $data Listado de servicios
*/
function washesUserList($id)
/**
* Listado de servicios en agenda y sin cancelar de un cliente
*
* @param int $id Id de cliente.
* @param string $finish Filtrar por acabados si/no.
*/
function washesUserListActive($id, $finish = 'all')
/**
* Lista de servicios finalizados de un cliente
*
* @param int $id Id del cliente
* @return array $data Listado de servicios
*/
function getCustomerHistoryWashes($id = 0)
/**
* Tiempo y agua ahorrado en servicios finalizados de un cliente
*
* @param int $id Id del cliente
* @return int $save Total de minutos/litros ahorrados
*/
function getCustomerHistorySaving($id)
/**
* Lista de complementos de un servicio
*
* @param int $id Id de servicio
* @return array $data Listado de complementos
*/
function washComplements($id)
/**
* Importe real de un servicio incluyendo descuentos
*
* @param int $id Id de servicio
* @return string $data Importe
*/
function washTotalPrice($id)
/**
* Importe del producto principal de un servicio (sin descuento), se usa para emitir facturas con el precio real y no el actual
* Se calcula según los importes guardados para evitar diferencias si el precio se ha modificado:
* Precio total - (Suma de los precios de los complementos)
*
* @param int $id Id de servicio
* @return string $data Importe
*/
function washProductPrice($id)
/**
* Datos de servicio
*
* @param int $id Id de servicio
* @param boolean $json Si el resultado es json para ajax o no
* @return object $data Datos de servicio
*/
function getWash($id, $json = false)
/**
* Obtener mail del plazier de un servicio
*
* @param int $wash Id de servicio
* @return string $email Correo del plazier
*/
function get_wash_plazier_email($wash)
/**
* Obtener cantidad de un complemento en un servicio
*
* @param int $wash Id de servicio
* @param int $comp Id de complemento
* @return int $data Cantidad
*/
function get_wash_comp_quantity($wash, $comp)
/**
* Nuevo servicio
*
* @return array $jsondata Mensaje de notificación
*/
function addWash()
/**
* Nuevo servicio interno
*
* @return array $jsondata Mensaje de notificación
*/
function addWashInternal()
/**
* Nuevo servicio web
*
* @return int $id Id de nuevo servicio
*/
function addWashWeb()
/**
* Modificar servicio
*
* @return array $jsondata Mensaje de notificación
*/
function editWash()
/**
* Modificar servicio web
*
* @return array $jsondata Mensaje de notificación
*/
function editWashWeb()
/**
* Modificar notas de servicio
*/
function editWashNotes()
/**
* Modificar tiempos de servicio desde formulario
*
* @return array $jsondata Mensaje de notificación
*/
function editWashTimes()
/**
* Actualizar una hora de servicio desde botón
*
* @param int $default_id Id de servicio
* @param string $default_field Campo
*/
function editWashTime($default_id = 0, $default_field = '')
/**
* Comprobar si un servicio tiene informe enviado
*
* @param int $id Id de servicio
* @return boolean $data Si/No
*/
function checkSendReport($id)
/**
* Respuesta de informe según servicio y pregunta
*
* @param int $wash Id de servicio
* @param string $question Campo de pregunta
* @return string $data Respuesta
*/
function getAnswer($wash, $question)
/**
* Informe completo de servicio
*
* @param int $id Id de servicio
* @return string $data informe
*/
function getWashReport($id = 0)
/**
* Guardar informe de servicio
*
* @return array $jsondata Mensaje de notificación
*/
function editWashReport()
/**
* Borrar servicio
*
* @param int $id Id de servicio
*/
function deleteWash($id = 0)
/**
* Establecer tiempo/precio de servicio
*
* @param int $id Id de servicio
* @return object $data Tiempo y precio total
*/
function setWashPriceTime($id)
/**
* Llamar a cliente
*/
function addWashCall()
/**
* Pausa de servicio, enviar información
*/
function addWashPauseInfo()
/**
* Nuevo SMS
*
* @return array $jsondata Mensaje de notificación
*/
function addWashSms()
/**
* Aviso de llegada con retraso
*/
function sendWashDelay()
/**
* Aviso de espera
*/
function sendWashWaiting()
/**
* Cancelar servicio
*/
function cancelWash()
/**
* Pausar servicio en curso
*/
function pauseWash()
/**
* Añadir incidencia a servicio
*/
function incidenceWash()
/**
* Añadir incidencia de empresa a servicio
*/
function incidenceWashCompany()
/**
* Borrar incidencia de servicio
*/
function deleteWashIncidence()
/**
* Listado completo de la galería de fotos
*
* @param int $pag Página
* @param int $num Fotos por página
* @param string $order Orden de listado
* @return array $data Listado de fotos
*/
function galleryList($pag, $num, $order = 'id DESC')
/**
* Listado de la galería de fotos de un modelo de vehículo
*
* @param int $vehicle Id de vehículos
* @return array $data Listado de fotos
*/
function galleryListVehicle($vehicle)
/**
* Comprobar si un servicio tiene fotos de Plazier
*
* @param int $id Id de servicio
* @return boolean $data Si/No
*/
function checkWashPhotos($id)
/**
* Comprobar si un servicio tiene fotos de Plazier de un tipo concreto
*
* @param int $id Id de servicio
* @param string $desc Tipo de fotos
* @param boolean $return Return o echo
* @return boolean $data Si/No
*/
function checkWashPhotosType($id = 0, $desc = '', $return = 0)
/**
* Comprobar si un servicio tiene fotos de cliente
*
* @param int $id Id de servicio
* @return boolean $data Si/No
*/
function checkWashCustomerPhotos($id)
/**
* Obtener fotos de servicio por categoría
*
* @param int $id Id de servicio
* @return array $data Fotos
*/
function getWashPhotos($id = 0, $json = false)
/**
* Subir fotos de servicio
*/
function addWashPhotos()
/**
* Guardar rutas a fotos externas
*
* @param int $wash Id de servicio
* @param string $image Url de imagen
* @param int $web Subida desde la web Si/No
*/
function addWashPhotosLink($wash, $image, $web)
/**
* Borrar foto de servicio
*/
function deleteWashPhoto()
/**
* Borrar fotos mal subidas de servicios
*/
function clearWashPhotos()
/**
* Nueva limpieza de paños
*
* @param object $plazier Datos de Plazier
* @return array $data Datos de nuevo servicio
*/
function addWashPanhos($plazier)
/**
* Nuevo servicio a partir de incidencia
*
* @param int $wash_id Id de servicio original
* @param int $product_id Id de nuevo servicio (0 para usar el original)
* @param int $plazier_id Id de plazier (0 para cualquiera)
* @param string $comments Comentarios
* @return int $id Id de nuevo servicio generado
*/
function incidenceAddWash($wash_id, $product_id, $plazier_id, $comments)
/**
* Nuevo descanso
*
* @param int $plazier Id de Plazier
* @param string $date Fecha
*/
function addWashRest($plazier, $date)
/**
* Comprobar si un Plazier tiene ya algún descanso en un día
*
* @param int $plazier Id de Plazier
* @param string $date Fecha
*/
function checkRest($plazier, $date)
Funciones para localizaciones
functions_zones.php
/**
* Lista de zonas
*
* @param int $pag Página
* @param int $num Zonas por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de zonas
*/
function zonesList($pag, $num, $order, $json = false)
/**
* Lista de ciudades
*
* @param int $pag Página
* @param int $num Ciudades por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de ciudades
*/
function citiesList($pag, $num, $order, $json = false)
/**
* Lista de cps
*
* @param int $pag Página
* @param int $num CPs por página
* @param string $order Orden de listado
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de CPs
*/
function cpsList($pag, $num, $order, $zone = 0, $json = false)
/**
* Lista de CPs de una ciudad para rellenar select
*
* @param int $city Id de ciudad
* @param boolean $json Si el resultado es json para ajax o no
* @return array $data Listado de CPs
*/
function loadCpsByCity($city = 0, $json = true)
/**
* Previsión meteorológica de un CP en un día
*
* @param string $cp CP
* @param string $date Fecha Y-m-d
* @return array $data Info de la previsión
*/
function cpWeather($cp = '', $date = '')
/**
* Nuevo cp
*
* @return array $jsondata Mensaje de notificación
*/
function addCp()
/**
* Modificar cp
*
* @return array $jsondata Mensaje de notificación
*/
function editCp()
/**
* Comprobar si existe un cp
*
* @param $cp string Código postal
* @return boolean
*/
function is_valid_cp($cp)
/**
* Obtener zona por cp
*
* @param $cp string Código postal
* @return $zone int Id de zona
*/
function get_zone_by_cp($cp)
/**
* Obtener horario en una zona un día de la semana
*
* @param $id int Id de zona
* @param $day int Nº de día de la semana
* @return $data string Horario
*/
function get_zone_day_schedule($id, $day)
/**
* Borrar cp
*/
function deleteCp()
/**
* Nueva zona
*
* @return array $jsondata Mensaje de notificación
*/
function addZone()
/**
* Modificar zona
*
* @return array $jsondata Mensaje de notificación
*/
function editZone()
/**
* Borrar zona
*/
function deleteZone()
/**
* Nueva ciudad
*
* @return array $jsondata Mensaje de notificación
*/
function addCity()
/**
* Modificar ciudad
*
* @return array $jsondata Mensaje de notificación
*/
function editCity()
/**
* Borrar ciudad
*/
function deleteCity()
/**
* Obtener coordenadas de CP
*
* @param $city string Ciudad
* @param $cp string CP
* @return $data array Latitud y longitud
*/
function getCpCoordenates($city, $cp)
/**
* Direcciones de Plazy en la zona de un Plazier
*
* @param $id int Id de Plazier
* @return $dirs array Direcciones
*/
function getPlazyAddresses($id)