Guía del usuario de MultiDatePick

Cada componente, cada ajuste y cada trampa, en el orden en que los encuentra un administrador. Sin necesidad de Apex.

1. Los tres componentes: cuándo usar cada uno

MultiDatePick incluye tres Lightning Web Components sobre una misma base. Elige el que encaje con tus datos.

Date

En los generadores: MultiDatePick - Dates

Selecciona muchas fechas a la vez. Ideal para confirmaciones de asistencia, control de presencia, vacaciones, fechas bloqueadas y calendarios de festivos.

Componente Date →

Date Time

En los generadores: MultiDatePick - Dates & Times

Fechas más franjas horarias. Ideal para clases, citas, bloques de formación y turnos.

Componente Date Time →

Booking

En los generadores: MultiDatePick - Resource Booking

Fechas, horas y un recurso. Ideal para salas, equipos, personas y todo lo que tenga capacidad.

Componente Booking →

Comparativa de funciones

Las funciones se suman. Todo lo que tiene Date está también en Date Time y Booking. Date Time añade horas; Booking añade recursos y capacidad.

Función Date Date Time Booking
Disponible en los tres componentes
Selección de fechas✓✓✓
Cinco vistas✓✓✓
Colores de estado✓✓✓
Fechas bloqueadas✓✓✓
Cargar registros existentes✓✓✓
Modo edición✓✓✓
Patrones recurrentes✓✓✓
Solo Date Time y Booking
Franjas horarias✓✓
Registros de sub-bloque✓✓
Solo Booking
Selector de recursos✓
Indicadores de capacidad✓

2. Estructuras de registro: cuándo usar cada una

La estructura de registro define cómo una selección se convierte en registros. Depende de tres decisiones independientes, y todas las combinaciones funcionan.

Decisión 1
Hora

Date: solo fechas, sin horas.

Date Time / Booking: cada registro tiene hora de inicio y de fin.

Extra: activa Consolidate Time Span (Consolidar rango de tiempo) para tener un registro principal que cubre todo el rango horario, más un sub-bloque hijo por cada hueco dentro de él.

Decisión 2
Recurso

Ninguno: Date, Date Time o Booking sin recurso.

Un solo recurso: Booking con una lista desplegable de recursos.

Varios recursos: Booking con casillas, un registro por cada recurso marcado.

Decisión 3
Rango

Por clic: cada fecha seleccionada es un registro. Cinco clics, cinco registros.

Por rango: las fechas consecutivas se agrupan en un registro con inicio y fin. Define End Date Field API Name (Campo de fecha de fin).

El asistente de configuración distingue seis estructuras: un registro por fecha, uno por rango de fechas, uno por bloque de tiempo, principal más sub-bloques, un solo recurso y varios recursos.

Ejemplos prácticos: responde las 3 preguntas

Responde tres preguntas por escenario y llegarás a una estructura. El asistente de configuración hace las mismas tres.

Asistente de configuración de MultiDatePick en Salesforce: las preguntas de Guiarme paso a paso sobre hora, recurso y rango, con un pequeño diagrama de estructura de registro en cada tarjeta de respuesta
Guiarme paso a paso hace las mismas 3 preguntas en tu organización y elige la estructura por ti.

Solicitud de vacaciones

¿Necesitas horas? No, solo fechas.

¿Necesitas un selector de recursos? No.

¿Deben unirse las fechas contiguas? Sí. Unas vacaciones de lunes a viernes deben ser UN solo registro.

→ Por rango: un registro que empieza el lunes y termina el viernes.

Reserva de sala de conferencias

¿Necesitas horas? Sí, cada reserva tiene inicio y fin.

¿Necesitas un selector de recursos? Sí, para elegir una sala.

¿Deben unirse las fechas contiguas? No, cada reserva es un registro.

→ Un solo recurso: un registro por fecha × bloque de tiempo, vinculado a la sala.

Formación en 3 salas

¿Necesitas horas? Sí, el mismo horario cada día.

¿Necesitas un selector de recursos? Sí, varias salas con casillas.

¿Deben unirse las fechas contiguas? Sí, dura de lunes a viernes.

→ Varios recursos, por rango: un registro por sala que cubre toda la semana.

Formación de jornada completa con pausa para comer

¿Necesitas horas? Sí, de 9:00 a 17:00 con un hueco para comer.

¿Necesitas un selector de recursos? No.

¿Hay que registrar el hueco? Sí, como registro hijo propio.

→ Principal más sub-bloques: un registro principal de 9:00 a 17:00 y un sub-bloque para la comida.

La cuadrícula: todas las combinaciones

Elige la fila según lo que necesites de hora y recurso. La columna depende de si End Date Field API Name está definido. Todas las celdas son configuraciones válidas.

Hora + recurso Por clic
(sin End Date Field)
Por rango
(con End Date Field)
Date
Sin hora. Componente Date.
Un registro por fecha
1 fecha → 1 registro.
Usar para: confirmaciones de asistencia, control de presencia, registros diarios.
Un registro por rango de fechas
Fechas consecutivas → 1 registro con inicio y fin.
Usar para: vacaciones, viajes, estancias de varias noches.
Date Time
Un bloque de tiempo por registro. Componente Date Time.
Un registro por bloque de tiempo
1 fecha × 1 bloque de tiempo = 1 registro.
Usar para: hojas de horas, segmentos de turno, bloques de formación.
Rango con un bloque de tiempo compartido. Fechas consecutivas con el mismo horario → 1 registro.
Usar para: formación de varios días con el mismo horario cada día.
Date Time + Consolidate Time Span
Registro principal más sub-bloques hijos para los huecos
Principal más sub-bloques
Un registro principal abarca todo el rango horario y cada hueco dentro de él se convierte en un sub-bloque hijo.
Usar para: formación con pausas para comer, rutas de campo con desplazamientos entre paradas.
Booking, un solo recurso
Una lista desplegable de recursos. Componente Booking.
Un solo recurso
1 registro por fecha × bloque de tiempo, vinculado al recurso.
Usar para: salas de conferencias, agenda de formadores.
Rango con un solo recurso. Fechas consecutivas en un recurso → 1 registro por rango.
Usar para: estancias de varias noches en una habitación, préstamo de equipos durante varios días.
Booking, varios recursos
Casillas de recursos (Allow Multiple Resources)
Varios recursos
1 registro por recurso × fecha × bloque de tiempo.
Usar para: reuniones de equipo en paralelo, formación en varias salas.
Rango con varios recursos. Fechas consecutivas en N recursos → N registros, uno por recurso.
Usar para: una semana de formación en 3 salas a la vez.
Booking + Consolidate Time Span
Reserva principal más sub-bloques hijos para los huecos
Reserva principal más sub-bloques: un recurso reservado todo el día con sus pausas registradas.
Usar para: equipos de laboratorio con ventanas de mantenimiento.

En resumen: cualquier combinación de las tres decisiones funciona. Si tu caso no encaja en un patrón con nombre, define cada decisión por separado y el componente hace el resto.

3. Recorrido por el asistente de configuración

El asistente de configuración guarda una configuración una sola vez. Escribe su nombre en Config Name (Nombre de configuración) en cualquier página o pantalla de flujo y esa ubicación la usará. Si cambias la configuración, todas las ubicaciones se actualizan.

  1. 1 Nombre & tipo
  2. 2 Objeto & campos
  3. 3 Campos de tiempo
  4. 4 Estado & visualización
  5. 5 Revisar & guardar

Elige cómo empezar

La pestaña Crear nuevo ofrece dos caminos. Guiarme paso a paso hace tres preguntas y elige el componente y la estructura. Configurar todas las propiedades abre todos los ajustes. Al lado hay dos pestañas más: Configuraciones existentes, para editar una configuración guardada, e Importar, para pegar una de la Config Library.

Asistente de configuración de MultiDatePick en Salesforce: la pantalla de inicio con los caminos Guiarme paso a paso y Configurar todas las propiedades
Guiarme paso a paso plantea las 3 preguntas. Configurar todas las propiedades va directo al paso 1.

Paso 1: Nombre & tipo

Elige el componente (Date, Date Time o Booking) y ponle nombre a la configuración. Ese nombre es lo que escribirás después en Config Name. En este paso también defines las vistas: la vista predeterminada, qué vistas ofrece el selector y las opciones de Línea de tiempo y Agenda.

Asistente de configuración de MultiDatePick en Salesforce, paso Nombre y tipo: el selector de tipo de componente para Date, Date Time y Booking, con los campos de nombre y etiqueta de la configuración
Paso 1: elige el componente y ponle nombre a la configuración.
Opciones de vista del asistente de configuración de MultiDatePick en Salesforce: Calendario, Línea de tiempo y Agenda elegidas para el selector de vistas, la línea de tiempo agrupada por la lista de selección Advisor Specialty y Client Name, Meeting Type y Status como campos de la agenda
Opciones de vista: elige las vistas del selector, agrupa las filas de la línea de tiempo por cualquier lista de selección o búsqueda y escoge las columnas de la agenda en una lista.

Paso 2: Objeto & campos

El paso más importante. Elige el objeto que guarda los registros, su campo de fecha y el campo de relación con el registro principal. Los campos opcionales añaden rangos, recursos, capacidad, sub-bloques y fechas bloqueadas. En las configuraciones de Booking también se definen aquí el objeto de recurso, el campo de capacidad y el horario comercial.

Asistente de configuración de MultiDatePick en Salesforce, paso Objeto y campos: los selectores de objeto relacionado, campo de fecha, campo de relación y campo de fecha de fin, más el selector de ubicación
Paso 2: el asistente lee el esquema de tu organización y ofrece una lista desplegable para cada campo.
Asistente de configuración de MultiDatePick en Salesforce, paso Objeto y campos: cada campo es una lista desplegable filtrada por el objeto elegido, aquí Advisor Appointment y Advisor, con la lista Campo de capacidad abierta mostrando solo los campos numéricos de Advisor
Nada de buscar nombres de API. Cada lista muestra solo campos del tipo adecuado: Campo de capacidad, por ejemplo, solo lista campos numéricos.
Sección de fechas bloqueadas del asistente de configuración de MultiDatePick en Salesforce: el objeto Advisor Closure como origen, sus campos Closure Date, Start Time y End Time seleccionados y la lista del campo de recurso abierta con sus búsquedas
Las fechas bloqueadas pueden venir de cualquier objeto. Elígelo y las listas de fecha, hora y recurso se rellenan solas.

Paso 3: Campos de tiempo

Solo Date Time y Booking. Asigna los campos de hora de inicio y de fin y define el Intervalo de tiempo (sirve cualquier intervalo; lo habitual son 15, 30 o 60 minutos), la hora más temprana y la más tardía, el modo de visualización y qué ocurre ante un conflicto.

Asistente de configuración de MultiDatePick en Salesforce, paso Campos de tiempo: campos de hora de inicio y fin, intervalo de 30 minutos, modo cuadrícula, de 08:00 a 18:00, comportamiento ante conflictos Block y 90 días de previsión, con la vista previa en vivo debajo
Paso 3: campos de hora, intervalo y reglas de conflicto, con la vista previa en vivo debajo.

Paso 4: Estado & visualización

Campo de estado y colores, estados que ocultar, estados que pueden elegir los usuarios, campos al pasar el cursor, modo edición, nombre de los registros, etiquetas de botones, tamaño del calendario y límites como Max Dates Allowed (Máximo de selecciones).

Asistente de configuración de MultiDatePick en Salesforce, paso Estado y visualización: campo de estado, asignación de colores de estado con muestras de color y ocultación de reservas por estado
Los colores de estado leen los valores de la lista de selección de tu campo de estado y asignan una muestra de color a cada uno.
Asistente de configuración de MultiDatePick en Salesforce, paso Estado y visualización: nombre de los registros, campos al pasar el cursor, tamaño del calendario, formato del encabezado de día y los conmutadores de funciones
Opciones de visualización y conmutadores de funciones, con la vista previa en vivo debajo.

Paso 5: Revisar & guardar

Revisa el resumen, prueba la vista previa en vivo y haz clic en Guardar configuración. El asistente despliega la configuración por ti en 30 a 60 segundos. Cuando termine, puedes añadir una descripción.

Asistente de configuración de MultiDatePick en Salesforce, paso Revisar y guardar: un resumen de cada ajuste elegido y una vista previa funcional del calendario configurado, con el botón Guardar configuración
Paso 5: todos los ajustes en una lista y una vista previa funcional. No se guarda nada hasta que haces clic en Guardar configuración.

Configuraciones existentes e Importar

Las configuraciones guardadas aparecen en Configuraciones existentes: haz clic en una para editarla o exportarla. La pestaña Importar acepta el JSON de cualquier tarjeta de la Config Library o una exportación de otra organización.

Asistente de configuración de MultiDatePick en Salesforce: la pestaña Importar con un cuadro para pegar una configuración JSON y la tarjeta Guardar descripción después de importar
Importar: pega una configuración JSON para replicar la misma configuración en cualquier organización.
Asistente de configuración de MultiDatePick en Salesforce: la pestaña Configuraciones existentes con las configuraciones guardadas, su tipo de componente, etiqueta y descripción
Configuraciones existentes: todas las configuraciones guardadas, listas para editar o exportar.
En un flujo de pantalla, define Config Name y ya está. Todas las casillas salen de la configuración, así que nunca necesitas un $GlobalConstant. Enlaza el registro principal con Parent Record Id.

4. Conjuntos de permisos y acceso

El paquete incluye cuatro conjuntos de permisos. Asígnalos en Configuración, Conjuntos de permisos.

Conjunto de permisosPara quiénAsistente de configuraciónUsar calendarios
MultiDatePick - SetupLos administradores que crean configuraciones✓ SíNo
MultiDatePick - UserTodos los que usan los calendariosNo✓ Sí
MultiDatePick - All AccessAdministradores que los crean y los usan✓ Sí✓ Sí
MultiDatePick - GuestEl usuario invitado de un sitio público de Experience CloudNo✓ Ver y reservar

Los componentes se ejecutan con los permisos de cada usuario, así que los usuarios también necesitan acceso a tus objetos y campos:

  • Objetos: Leer y Crear en el objeto donde se guardan los registros, y Leer en cualquier objeto de recurso, cierre o hijo que lea el calendario.
  • Campos, lectura: todos los campos que muestra el calendario (fecha, estado, campos al pasar el cursor).
  • Campos, edición: todos los campos que escribe (fecha, horas, estado, segunda lista de selección, campo de nombre, la búsqueda al registro principal). Si el usuario no puede editar un campo, el guardado falla aunque la lectura funcione.
  • Registros referenciados: al menos Leer en el registro principal y en el recurso a los que apunta el nuevo registro.
Los administradores también necesitan acceso a los campos. Un campo personalizado recién creado es invisible para todos, incluidos los administradores del sistema, hasta que un conjunto de permisos lo concede. Si al guardar parece faltar un campo, revisa primero la seguridad a nivel de campo.

Cada mensaje de error y su causa están en Solución de problemas: errores de acceso. Los sitios para invitados necesitan algunos pasos más: consulta Páginas públicas para invitados.

5. Guardar con un clic o guardar desde el flujo

Hay dos formas de guardar. Elige la que mejor encaje con la ubicación.

Guardar con un clic

El componente escribe los registros por sí mismo. Rellena cuatro ajustes y aparece su propio botón Guardar. Un clic y se crean los registros hijos. Sin elementos de flujo ni código.

Dónde usarlo: páginas de registro, páginas de aplicación, páginas de inicio, sitios de Experience Cloud y pantallas de flujo con un registro principal.

Guardar desde el flujo

El componente entrega la selección a tu flujo. Usa la acción incluida Parse Date Entries from JSON y después tus propios elementos Bucle y Crear registros.

Dónde usarlo: pantallas de flujo en las que quieres control total: aprobaciones, registros condicionales, validaciones adicionales.

Guardar con un clic: los cuatro ajustes

El asistente de configuración los rellena por ti. Cuando los cuatro tienen valor, aparece el botón Guardar.

AjusteContenidoNombre de API
Child Object API NameEl objeto donde se guardan los registrosrelatedObjectApiName
Date Field API NameEl campo de fecha de ese objetodateFieldApiName
Relationship Field API NameLa búsqueda que apunta al registro principalrelationshipFieldApiName
Parent Record Id o Static Parent Record IdEl registro principal. En una página de registro se rellena solo. En un flujo, enlaza Parent Record Id. En páginas de aplicación, de inicio y de Experience Cloud, escribe el Id en Static Parent Record Id.recordId / staticRecordId
Dos botones en una pantalla de flujo. Con Guardar con un clic activado, el botón Guardar del componente escribe los registros y el botón Siguiente del flujo solo avanza. Los usuarios pulsan primero Guardar y después Siguiente.

Qué registro principal usa cada página, y cuándo conviene elegirlo en un flujo, se explica en Páginas de aplicación, inicio y Experience.

Guardar desde el flujo: las salidas

Deja en blanco los cuatro ajustes. El botón Guardar se oculta y la selección sale por estas salidas del flujo:

SalidaContenidoComponentes
Selected Dates (Output)Una colección de texto con las fechas (YYYY-MM-DD)Date, Date Time
Date Ranges JSON (Output)Fechas consecutivas agrupadas en rangosDate, Date Time
Dates With Times JSON (Output)Cada fecha con sus horasDate Time
Successful Bookings Count / Conflict DatesResultados después de que Booking guarde por sí mismoBooking

Pasa el JSON a Parse Date Entries from JSON. Devuelve una lista que puedes recorrer con un Bucle, con fecha desde, fecha hasta, hora de inicio, hora de fin e Id de recurso en cada elemento. Paso a paso: Recetas de flujos.

Guardar solo añade

Guardar con un clic solo crea registros nuevos. Deseleccionar una fecha nunca borra un registro guardado, así que un clic equivocado no puede hacerte perder datos. Para cambiar o eliminar registros, usa el modo edición o la lista relacionada.

6. Colores de estado y modo edición

Colores de estado y filtrado

Colorea los registros según cualquier lista de selección de tu objeto, oculta algunos valores y limita lo que pueden elegir los usuarios finales.

AjusteFunciónNombre de API
Status FieldLa lista de selección que define los colores, por ejemplo Confirmed / Tentative / Cancelled.statusField
Status ColorsUn color por valor, como Confirmed:#22C55E, Tentative:#fbbf24. Déjalo en blanco para usar una paleta automática.statusColors
Status Color DisplayDónde se muestran los colores: calendario, cuadrícula o ambos. Déjalo vacío para una página de cliente limpia, sin colores.statusColorDisplay
Ignored StatusesOculta del calendario y de los recuentos de capacidad los registros con estos valores (por ejemplo No-Show,Cancelled).hideBookingsWithStatus
Selectable StatusesLimita los valores que puede elegir un usuario final, por ejemplo solo Requested, mientras el personal los ve todos.selectableStatuses
Dos páginas, un mismo objeto. Una página para clientes puede ir sin colores, con Requested como único estado seleccionable y ocultando No-Show y Cancelled. Una página interna sobre los mismos registros activa los colores y ofrece todos los estados.

Modo edición

Activa Enable Edit Mode (Activar modo edición) y aparecerá un botón Editar. En el modo edición los usuarios pueden:

  • Ver los registros existentes como tarjetas con su fecha y estado
  • Hacer clic en fechas para añadir sus registros al conjunto en edición
  • Cambiar la fecha, las horas, el recurso o el estado, y el registro se actualiza
  • Eliminar con confirmación en dos clics, para que nada se borre por accidente
Demo animada del modo edición de MultiDatePick en un calendario de Salesforce: se seleccionan dos días de citas Requested, Seleccionar todo marca ambas reservas, el estado pasa a Confirmed y, tras Aplicar cambios, los dos días cambian de azul a verde
Cambio de estado masivo: selecciona los días, Seleccionar todo, elige el estado y Aplicar.
Demo animada del modo edición de MultiDatePick en un calendario de Salesforce: se selecciona la cita de un cliente, se indica el día siguiente en Mover a fecha y, tras Aplicar cambios, la reserva deja el 30 de octubre y aparece el 31, el único día aún seleccionado
Mover reservas: elige el día, indica una fecha nueva y Aplicar. El mismo panel cambia el recurso o las horas.
Calendario de reservas de Salesforce con colores de estado en cada día y el modo edición abierto: el día seleccionado lista cada reserva con su estado, hora y sala, lista para un cambio de estado masivo, un traslado o una reasignación
Los colores de estado pintan cada día. El modo edición lista los registros del día, listos para cambiarlos.

7. Vistas: cinco diseños, un componente

Cada componente ofrece cinco diseños. Todos leen los mismos registros con las mismas asignaciones de campos, respetan las mismas reglas de conflicto, fechas bloqueadas y horario comercial, y guardan igual. Cambiar de vista cambia cómo se ven los registros, nunca lo que significan.

Las cinco vistas y la pregunta que responde cada una

Vista (View)La preguntaDiseño¿Permite editar?
Calendario¿Qué pasa el día 14?Un mes cada vez, con colores de estado por día.Sí. Es la predeterminada.
Línea de tiempo¿Qué recurso está libre, y cuándo?Recursos en filas, fechas en columnas. Los registros de varios días se dibujan como una sola barra.Sí
Semana¿Quién está libre el jueves a las 14:00?Siete días en horizontal y el horario comercial en vertical. Arrastra a la vez sobre días y horas.Sí
Ocupación¿Quién supera su capacidad?Mapa de calor de la capacidad usada, por recurso y por día.No, solo lectura
Agenda¿Qué viene ahora?Una lista ordenada de los próximos 60 días.No, solo lectura
No abras una página de reservas en Ocupación o Agenda. Ambas son de solo lectura, así que la página perdería su función principal. Ofrécelas en Available Views (Vistas disponibles) y abre en una vista editable.

Ajustes

AjustePredeterminadoFunción
ViewviewCalendarioLa vista con la que se abre el componente.
Available ViewsavailableViewsen blancoLas vistas que ofrece el selector, por ejemplo calendar,timeline,agenda. En blanco ofrece las cinco. Tu vista predeterminada siempre se incluye, así que indica solo las adicionales.
Timeline Window (Days)timelineWindowDays14Cuántos días muestra a la vez la línea de tiempo. Con un mes completo, cada reserva queda de unos veinte píxeles de ancho y su etiqueta se corta. Pon 0 para el mes completo. Las flechas interiores avanzan una ventana; las exteriores, un mes.
Resource RowsresourceViewFilterallbooked dibuja solo los recursos con alguna reserva en pantalla. Es la mejor forma de acortar una lista larga, porque una fila vacía no aporta información. Si no hay nada reservado en ningún recurso, vuelven a mostrarse todos.
Max View ResourcesmaxViewResources0 (todos)Limita cuántas filas de recursos dibujan Línea de tiempo y Ocupación, empezando por las más ocupadas. Todo se sigue contando. Mejor usa Resource Rows, que solo oculta las filas vacías.
Agenda FieldsagendaFieldsen blancoCampos adicionales en cada fila de la agenda, hasta cuatro. En blanco reutiliza Hover Popover Fields. La fecha, la hora y el nombre ya aparecen en la fila.
Capacity FieldcapacityFielden blancoNo es un ajuste de vista, pero Ocupación lo necesita para mostrar porcentajes en lugar de recuentos.

Una vista distinta en cada página

La vista se define en cada ubicación, así que los mismos registros pueden verse de forma distinta según dónde aparezcan. Una instalación, un único juego de asignaciones de campos.

UbicaciónVista (View)Vistas disponibles (Available Views)
Página de entrevistas del reclutadorSemanacalendar,agenda
Página de reserva de salas de servicios generalesCalendariotimeline,utilization
Cuadrante del responsable de turnosLínea de tiempoweek,agenda
Pantalla mural de operacionesAgendautilization,timeline
Página pública de Experience CloudCalendarioen blanco, o una lista corta

El modo edición funciona en todas las vistas

Con Enable Edit Mode activado, el botón Editar aparece en todas las vistas. Haz clic en un registro de Línea de tiempo, Semana o Agenda para añadirlo al conjunto en edición, igual que una fecha en el calendario mensual. Un cambio de estado masivo desde la línea de tiempo funciona exactamente igual que desde el calendario.

Línea de tiempo: filas contraídas

Cuando un recurso tiene reservas solapadas, su fila se contrae en una sola franja con una etiqueta N a la vez. Un desplegable abre un carril por reserva. Las filas contraídas siguen admitiendo arrastrar, pasar el cursor y hacer clic.

Vista de línea de tiempo de Salesforce con reservas de varios días solapadas, apiladas en carriles bajo cada recurso, un desplegable en cada fila con varios carriles y una franja de capacidad combinada arriba
Las reservas solapadas se apilan en carriles. La franja superior muestra lo lleno que está cada día.

Línea de tiempo: arrastra para reprogramar

Con Enable Edit Mode activado, las barras de la línea de tiempo se pueden arrastrar. Agarra el centro para mover una reserva a otros días, o un borde para cambiar su inicio o su fin. La barra muestra dónde quedará y se guarda al soltar. Con zoom de Día, los mismos gestos cambian las horas.

Demo animada de reprogramación en la línea de tiempo de MultiDatePick en Salesforce: arrastrar el borde derecho de un encargo lo alarga dos días y arrastrar otro lo desplaza dos días más tarde; cada cambio se guarda al soltar y la barra muestra sus nuevas fechas
Alarga una reserva desde su borde y desplaza otra a días posteriores. Cada cambio se guarda al soltar.

Programa personas, no solo salas

Resource Object API Name (Objeto de recurso) acepta cualquier objeto. Pon User y la línea de tiempo se convierte en un cuadrante de personal, Semana en una cuadrícula de turnos y Ocupación en un panel de capacidad del equipo.

  • User no tiene un campo de capacidad estándar. Añade uno personalizado (por ejemplo Daily Capacity) para ver la ocupación en porcentajes.
  • Asigna Business Hours Start Field (Campo de inicio del horario comercial) y Business Hours End Field (Campo de fin del horario comercial) a campos de User y la cuadrícula semanal seguirá el horario de cada persona.

La Config Library tiene dos ejemplos ya preparados: Planificación de la capacidad del equipo y Cuadrante de turnos del personal.

MultiDatePick mostrando reservas de Salesforce en las cinco vistas: línea de tiempo de recursos, calendario mensual, mapa de calor de ocupación, cuadrícula semanal y lista de agenda
Las mismas reservas en las cinco vistas.

8. Reserva de recursos y capacidad (componente Booking)

Un solo recurso

Los usuarios eligen un recurso en una lista desplegable. La cuadrícula de horarios carga las reservas y la capacidad de ese recurso.

Varios recursos

Activa Allow Multiple Resources (Permitir varios recursos) y la lista desplegable se convierte en casillas. La cuadrícula muestra solo las franjas libres en todos los recursos marcados, y Guardar los reserva todos a la vez.

Calendario de reservas de Salesforce en modo multirrecurso con dos recursos marcados: una cuadrícula de capacidad combinada con indicadores X/Y en cada franja horaria
Dos recursos marcados. Cada indicador muestra reservas sobre capacidad sumando ambos.

Capacidad

Permite que varias reservas compartan una franja, con indicadores 3/5 en vivo. Una franja completa deja de aceptar reservas.

AjusteFunciónNombre de API
Capacity FieldUn campo numérico en el recurso, por ejemplo Capacity = 5.capacityField
Show Availability CountMuestra los indicadores X/Y.showAvailabilityCount
Capacity AggregationCombined (predeterminado) suma reservas y capacidades de los recursos marcados: dos salas de 5 muestran 0/10. Distinct cuenta una sola vez un evento reservado en varios recursos y usa la mayor capacidad individual: una clase en 4 salas muestra 1/5, no 4/20.capacityAggregation
La capacidad necesita los dos campos de hora de la reserva. Sin Booking Start Time Field (Campo de hora de inicio) y Booking End Time Field (Campo de hora de fin) no hay franjas que contar, y el componente muestra un aviso ámbar en lugar del calendario.

Conflictos

Conflict Behavior (Comportamiento ante conflictos) decide qué pasa cuando una franja elegida ya está ocupada. Conflict Look-Ahead Days (Días de previsión de conflictos) define hasta cuándo se comprueba (por defecto, 360 días).

ValorQué ocurreIdeal para
Block (predeterminado)Una franja ocupada no se puede elegir, y el guardado se detiene con los conflictos resaltados.La mayoría de páginas de reservas
SkipGuarda las franjas libres y omite las ocupadas. Las fechas omitidas vuelven en Conflict Dates (Output).Reservar lo que quede libre en muchas fechas
AllowSin comprobación de conflictos. Las reservas pueden superar la capacidad.Sobreventa intencionada

Un cierre siempre manda. Nada se guarda en una franja bloqueada, ni siquiera con Allow.

9. Limitar lo que seleccionan los usuarios

Limita cuánto puede elegir una persona, por fechas o por franjas horarias.

AjusteFunciónNombre de API
Max Dates Allowed
Booking: Max Dates Per Booking (Máximo de selecciones)
Máximo de fechas que puede elegir un usuario. 0 significa sin límite.maxSelections
Max Time SlotsMáximo de franjas horarias en total, sumando todas las fechas. 0 significa sin límite. Usa 1 para una sola cita por persona.maxTimeSlotSelection
Earliest / Latest Selectable DateAtenúa las fechas fuera de un intervalo fijo.minDate / maxDate
Book Up To / Minimum NoticeUna ventana móvil: hasta N días por delante, con al menos N horas de antelación.maxDaysAhead / minNoticeHours
Buffer Between BookingsReserva tiempo libre de preparación después de cada reserva.bufferMinutes
Add to CalendarTras Guardar, un único archivo .ics con todo lo que se acaba de guardar.showAddToCalendar
Allow Past DatesDesactivado, solo permite hoy y fechas posteriores. Activado por defecto en Date y Date Time, desactivado en Booking.allowPastDates
Max Dates Allowed limita fechas, no franjas. Con un límite de 1, el usuario aún puede elegir varias franjas en esa fecha. Añade Max Time Slots (Máx. franjas horarias) para limitar el número de reservas.

10. Bloquear fechas, horas y recursos (cierres)

Cualquier calendario puede leer cierres de otro objeto y atenuar las fechas, franjas horarias o recursos que cubren, para que los usuarios solo reserven cuando estás abierto. Apunta unos pocos ajustes al objeto de cierres y el componente hace el resto. Los bloqueos de día completo funcionan en los tres componentes; los de hora y de recurso necesitan la cuadrícula de horarios de Date Time o Booking.

Bloquear u ocultar: ¿qué diferencia hay?

Suenan parecido, pero hacen lo contrario. Bloquear quita disponibilidad: la franja se ve, pero no se puede reservar. Ocultar saca registros de la vista, lo que libera sus franjas.

Bloquear (cierres) Ocultar (por estado)
Qué controlaQué fechas, horas y recursos se pueden reservarQué registros guardados aparecen
AjusteBlocked Dates Object (Objeto de fechas bloqueadas) y sus campos de fecha, hora y recursoIgnored Statuses
Depende deUna lista de cierres o festivos: su propio objeto, o tu objeto de reservas filtradoUn valor de estado en los propios registros
Qué ven los usuariosLa franja está, pero tachada, atenuada y sin poder hacer clicEl registro desaparece del calendario
Efecto en la capacidadQuita disponibilidadLibera disponibilidad: el registro oculto deja de contar
Los datosNo existe ninguna reserva; solo marcas la franja como no disponibleLos registros siguen existiendo en Salesforce
Úsalo paraFestivos, ventanas de mantenimiento, una sala o región cerradaReservas Cancelled o Rejected que no deben saturar la cuadrícula ni contar contra la capacidad
Un mismo estado puede hacer cualquiera de las dos cosas, según la función a la que lo conectes. Por ejemplo, una reserva Cancelled:
  • Ignored Statuses (Estados ignorados) = Cancelled → la reserva desaparece y su franja queda libre.
  • Blocked Dates Object = tu objeto de reservas, filtrado por Status = Cancelled → la reserva bloquea su fecha para que nadie vuelva a reservarla.
Oculta para liberar la franja. Bloquea para mantenerla cerrada.

Los ajustes de fechas bloqueadas

AjusteFunciónNombre de API
Blocked Dates ObjectEl objeto que contiene los cierres, como un objeto Office Closure o tu objeto de reservas. Al definirlo se activa el bloqueo.blockedDatesSourceObject
Blocked Dates Date FieldEl campo de fecha de ese objeto.blockedDatesDateField
Blocked Dates Start / End Time FieldCampos de hora opcionales. Define ambos para bloqueos de parte del día; déjalos en blanco para bloqueos de día completo. Date Time y Booking.blockedDatesStartTimeField / blockedDatesEndTimeField
Blocked Dates Resource FieldBúsqueda opcional que limita un cierre a un solo recurso. En blanco, el cierre se aplica a todos los recursos. Booking.blockedDatesResourceField
Blocked Dates Filter Field / ValueÁmbito opcional, como Region = North o Status = Cancelled. Así una sola tabla de cierres sirve a muchos calendarios.blockedDatesFilterField / blockedDatesFilterValue

Tres niveles de bloqueo

  1. Día completo: un cierre sin horas atenúa toda la fecha. En los tres componentes. Una fecha cerrada sigue cerrada aunque ya tenga reservas.
  2. Parte del día: un cierre con hora de inicio y de fin bloquea solo esas franjas. El resto del día sigue disponible. Las franjas bloqueadas se ven al seleccionar una fecha.
  3. Un recurso: un cierre que apunta a un recurso cierra solo ese recurso. En la vista de un solo recurso, la franja aparece tachada. En la vista combinada lleva una pequeña marca en la esquina y sigue disponible en los recursos abiertos.

¿Usas la cuadrícula de horarios? Lo que necesitas son bloqueos de parte del día. Los de día completo son para selectores solo de fecha.

Dos patrones para el objeto de cierres

  • El mismo objeto, marcado por estado: apunta Blocked Dates Object a tu objeto de reservas y filtra Status = Cancelled, de modo que las reservas canceladas hacen también de cierres. Es lo más sencillo, pero todos los calendarios de ese objeto los comparten. Consulta la configuración Reserva de citas con festivos en la Config Library.
  • Un objeto de cierres propio: un objeto Office Closure con una fecha, horas de inicio y fin opcionales, un campo Region y una búsqueda opcional a un recurso. Cada calendario filtra por su región, y un cierre puede apuntar a un solo recurso. Consulta la configuración Cierres de recursos por horas.

Para que cada persona bloquee su propio tiempo (por ejemplo, un responsable que bloquea una mañana), coloca en una página interna o un sitio un componente Date Time que guarde en el objeto de cierres.

Cómo se comportan las franjas bloqueadas

  • Aspecto: una franja totalmente cerrada aparece tachada y atenuada. Una franja cerrada solo para algunos de los recursos elegidos lleva una marca en la esquina.
  • Selección: una franja totalmente cerrada no se puede pulsar ni arrastrar.
  • Guardado: nada se guarda en un recurso, fecha y hora cerrados. Con varios recursos, solo se excluye el cerrado; los abiertos se reservan igual.

Una tabla de cierres, muchos calendarios

Añade al objeto de cierres un campo de etiqueta (Region, Location, Building) y pon el mismo campo en tus recursos. Así cada calendario usa Resource Filter Field / Value para mostrar sus recursos y Blocked Dates Filter Field / Value para leer sus cierres.

11. Páginas públicas para invitados (Experience Cloud)

Coloca un componente en un sitio de Experience Cloud y cualquiera podrá reservar sin iniciar sesión. Completa los cinco pasos antes de probar como invitado.

  1. Permisos de objeto. Da al usuario invitado del sitio permiso de Leer en cada objeto, y de Crear si los invitados envían datos. Salesforce nunca permite que los invitados editen ni eliminen registros, así que deja las páginas de edición, cancelación y eliminación para usuarios con sesión iniciada.
  2. Seguridad a nivel de campo en todos los campos que toca el componente, incluidos los de horario comercial del recurso y los de hora de los cierres. Un solo campo que falte detiene la consulta de recursos o de cierres.
  3. Una regla de colaboración para invitados (Leer) para que el invitado vea los registros. El valor predeterminado externo de toda la organización del objeto debe ser Privado para que la regla se aplique. Una regla implementada como metadatos necesita un clic en Recalcular en Configuración, Configuración de colaboración.
  4. El conjunto de permisos MultiDatePick - Guest en el usuario invitado del sitio. Incluye el acceso a las clases de Apex con las que el componente carga sus datos.
  5. Activa el sitio. Publicar y activar son pasos distintos.
¿Calendario vacío para los invitados? Si objetos, campos y acceso a clases parecen correctos, casi siempre es el recálculo de colaboración del paso 3. Los pasos 4 y 5 son los siguientes que más se olvidan.
  • Qué registro ven los invitados: una página pública usa Static Parent Record Id, así que todos los invitados reservan sobre el mismo registro principal (una oficina, una sede o un recurso). Para un registro por visitante, contrólalo desde un flujo con un parámetro de URL. Los calendarios realmente personales requieren usuarios con sesión iniciada.
  • Contactos y cuentas: Salesforce restringe mucho el acceso de los invitados a ellos. Haz que los invitados reserven sobre un objeto personalizado o usa un sitio autenticado.
  • Varios componentes en una página: no se sincronizan en vivo. Añade un aviso para actualizar entre ellos, de modo que un bloqueo hecho en uno se vea en el siguiente.

Los pasos de ubicación están en Páginas de aplicación, inicio y Experience. Un sitio completo de ejemplo está en Reservas en Experience Cloud.

12. Problemas habituales (preguntas frecuentes)

¿Ves un aviso, falta el botón Guardar o el calendario sale vacío? Solución de problemas muestra cada mensaje con una captura y la solución.

Mis colores de estado no se aplican
Revisa tres cosas. (a) ¿Es Status Field (Campo de estado) el nombre de API exacto de la lista de selección? Distingue mayúsculas y minúsculas. (b) ¿Usa Status Colors (Colores de estado de reserva) el formato Value:#hex, Value:#hex sin comillas? 'Confirmed':'#22C55E' lo rompe sin avisar. (c) ¿Tienen realmente los registros un valor en esa lista de selección?
Los registros se guardan con nombres inesperados
Revisa Record Name Field (Campo de nombre del registro): si el campo es corto, los nombres largos se cortan. Revisa Append Date to Record Name (Añadir fecha y hora al nombre): si está activado, la fecha y la hora seleccionadas se añaden a todos los nombres.
¿Cómo oculto los registros Cancelled de la cuadrícula de capacidad?
Define Ignored Statuses como Cancelled, o como una lista del tipo Cancelled,Rejected. Desaparecen del calendario y del recuento de capacidad.
¿Qué diferencia hay entre bloquear y ocultar?
Bloquear (cierres) mantiene visible una fecha, hora o recurso, pero sin poder reservarlo: festivos, mantenimiento, una sala cerrada. Ocultar quita registros, como los Cancelled, del calendario y de la capacidad, lo que libera la franja. Consulta Bloquear u ocultar.
No aparece el botón Editar
Activa Enable Edit Mode. Es el único requisito, en los tres componentes. El campo de estado es opcional: solo añade una lista desplegable de estados en el editor. Si el botón sigue sin aparecer, la página o la configuración tiene Enable Edit Mode desactivado.
Solo quiero algunos recursos (salas, no equipos)
Usa Resource Filter Field (Campo del filtro de recursos) y Resource Filter Value (Valor del filtro de recursos). Un valor: campo Active__c, valor true. Varios valores (O): North,South. Varios campos (Y): campo Type__c;Active__c, valor Conference Room;true.
Date Time sigue mostrando un único selector de hora compartido
El ajuste que buscas es Time Display Mode (Modo de visualización de hora): Grid o Dropdown. En modo Grid todas las fechas comparten la cuadrícula. Para una hora distinta en cada fecha, elige Dropdown y activa Allow Different Times Per Date (Permitir horas distintas).
¿Cómo paso de guardar desde el flujo a guardar con un clic?
Rellena Parent Record Id, Child Object API Name (Objeto relacionado), Date Field API Name (Campo de fecha) y Relationship Field API Name (Campo de relación). Quita la acción Parse Date Entries from JSON y el bucle que creaba los registros. Ahora los escribe el propio botón Guardar del componente.
Me sale un aviso de error sin detalles
Abre la consola de desarrollador del navegador y busca las líneas que empiezan por [MDP:ERROR]. El error completo siempre se registra ahí, aunque el aviso sea breve.

13. Recetas de flujos

Todo lo de esta sección se crea en Flow Builder. Sin Apex.

Recorrer en bucle las fechas seleccionadas

  1. Añade una pantalla con el componente Date Time. Deja en blanco los ajustes de guardar con un clic.
  2. Después de la pantalla, añade la acción Parse Date Entries from JSON. Pásale Dates With Times JSON (Output).
  3. Recorre en un bucle la lista de la acción. Cada elemento tiene fecha desde, fecha hasta, hora de inicio y hora de fin.
  4. Dentro del bucle, asigna los valores a una variable de registro y añádela a una colección. Crea los registros una sola vez, después del bucle.

Llevar la primera y la última fecha al registro principal

¿Quieres que el registro principal muestre la fecha hija más temprana y la más tardía? Elige la vía sin código que encaje con tus datos.

Tu configuraciónHaz esto
Relación principal-detalleAñade dos campos de resumen consolidado en el registro principal: MIN del campo de fecha y MAX del campo de fecha. Listo.
Relación de búsquedaUn flujo desencadenado por registro en el objeto hijo (después de guardar). Obtener registros del objeto hijo con el mismo registro principal, ordenados por fecha ascendente, solo el primero. Repite con orden descendente. Actualiza la fecha de inicio y de fin del registro principal con esas dos fechas.

Más patrones de flujo: Guía de flujos de pantalla.

14. Asignación de objetos y campos

La página de cada componente tiene un diagrama completo de asignación de objetos y campos:

Los componentes funcionan con cualquier objeto. Los objetos de ejemplo del paquete (Schedule, Event, Resource, Sub Block) son solo valores por defecto. Apunta los ajustes a tus propios objetos personalizados o estándar con los campos adecuados.

15. Referencia de todas las propiedades

Todos los ajustes de los tres componentes, con la etiqueta que ves en Lightning App Builder, Experience Builder y Flow Builder. El nombre de API aparece bajo cada etiqueta.

Todas las propiedades Más de 100 propiedades Haz clic para desplegar: con búsqueda
Propiedad Date Date Time Booking Tipo Predeterminado Descripción
Configuración
Config NameconfigName✓✓✓Stringen blancoOpcional: DeveloperName de un registro Config__mdt creado por el asistente de configuración. Si se define, todos los ajustes de campos y objetos de esa configuración se aplican como valores por defecto. Las propiedades de texto y número que definas aquí prevalecen sobre la configuración. Las casillas siempre salen de la configuración: una casilla desmarcada no se distingue de una que nunca se tocó.
Vistas
Viewview✓✓✓StringcalendarQué vista usar. calendar es la cuadrícula mensual (predeterminada). timeline muestra los recursos en filas y las fechas en columnas. week es una cuadrícula de días por horas. utilization es un mapa de calor de capacidad, de solo lectura. agenda es una lista cronológica, de solo lectura.
Available ViewsavailableViews✓✓✓Stringen blancoLista separada por comas de las vistas que ofrece el selector, p. ej. calendar,timeline,agenda. En blanco ofrece las cinco. La vista predeterminada (View, arriba) siempre se incluye.
Timeline Window (Days)timelineWindowDays✓✓✓Integer14Cuántos días muestra a la vez la vista de línea de tiempo. Con un mes entero cada reserva queda de unos veinte píxeles de ancho y todas las etiquetas se cortan, por eso el valor por defecto es 14. Pon 0 para mostrar el mes completo.
Timeline ZoomtimelineZoom✓✓✓StringweekZoom inicial de la vista de línea de tiempo: day (las horas de un día), week (la ventana de Timeline Window) o month. Los usuarios pueden cambiar el zoom mientras la consultan.
Timeline Group By FieldtimelineGroupByField✓✓✓Stringen blancoNombre de API de un campo del objeto de recurso (por ejemplo Building__c) para agrupar las filas de la línea de tiempo bajo encabezados con una franja de capacidad. En blanco, una sola lista plana.
Max View ResourcesmaxViewResources✓✓✓Integer0Máximo de filas de recursos que dibujan las vistas Línea de tiempo y Ocupación, empezando por las más ocupadas. Evita que una lista grande de recursos convierta cualquiera de las dos vistas en un muro ilegible.
Agenda FieldsagendaFields✓✓✓Stringen blancoCampos, separados por comas, que se muestran en cada fila de la vista Agenda tras el nombre del registro. En blanco reutiliza Hover Fields. Los campos de fecha, hora y nombre del registro se omiten automáticamente porque la fila ya los muestra.
Resource RowsresourceViewFilter✓✓✓StringallQué recursos tienen fila en Línea de tiempo y Ocupación. all dibuja todos; booked solo los que tienen alguna reserva en la ventana actual, que es la mejor forma de acortar una lista larga de recursos, porque ocultar una fila vacía no quita información.
Visualización y diseño
Button Labellabel✓✓✓StringDate: Seleccionar fechas; Date Time: Seleccionar fechas & horas; Booking: Reservar recursoTexto del botón que abre el selector de fechas. Ejemplo: 'Elegir fechas' o 'Añadir fechas'
Calendar TitlemodalTitle✓✓✓StringDate: Seleccionar fechas; Date Time: Seleccionar fechas & horas; Booking: Reservar recursoTítulo que aparece en la parte superior de la ventana modal del calendario.
Show Inline (Always Visible)También aparece como Show Inline (No Button)showInline✓✓✓BooleantrueActivado, el calendario está siempre visible sin necesidad de pulsar un botón. Desactivado, un botón abre el calendario en una ventana emergente.
Two-Month ViewtwoMonthView✓✓✓BooleanfalseActivado, muestra dos meses uno al lado del otro para seleccionar rangos con más facilidad. Desactivado, muestra un mes cada vez.
Calendar SizecalendarSize✓✓✓StringmediumControla el tamaño general del calendario. Valores válidos: tiny, xsmall (Very Small), small, medium, large. El predeterminado es medium. Usa tiny o xsmall en barras de utilidades, barras laterales y mosaicos de paneles; small en espacios reducidos; medium en la mayoría de diseños; y large para experiencias táctiles.
Day Header FormatdayHeaderFormat✓✓✓String3Longitud de los encabezados de los días de la semana. Valores válidos: 3, 2, 1. El predeterminado es 3. 3 = DOM LUN MAR, 2 = DO LU MA, 1 = D L M.
Week Starts on MondayweekStartsOnMonday✓✓✓BooleanfalseActivado, la semana del calendario empieza en lunes (estándar ISO). Desactivado, empieza en domingo (estándar de EE. UU.).
Show Recurring Pattern ButtonshowRecurringPattern✓✓✓BooleantrueActivado, muestra un botón con el que los usuarios seleccionan rápidamente todos los días laborables, los fines de semana o días concretos de la semana hasta una fecha de fin.
Show Selection SummaryshowSelectedSummary✓✓✓BooleantrueActivado, muestra un resumen con cuántas fechas hay seleccionadas y cuáles son.
Show Done Button in Inline ModeshowDoneButtonInline✓✓✓BooleanfalseActivado y con Show Inline habilitado, muestra un botón Listo que contrae el calendario en una vista de resumen.
Show In-Component ToastshowSuccessToast✓✓✓BooleanfalseMuestra un aviso de éxito o error dentro del componente (necesario en sitios de Experience Cloud, donde el aviso estándar no aparece). También funciona en páginas de registro.
Show Add to Calendar After SavingshowAddToCalendar✓✓✓BooleanfalseTras guardar correctamente, un botón Añadir al calendario descarga un archivo de calendario (.ics) con un evento por cada registro recién guardado. Se abre en Outlook, Google Calendar y Apple Calendar, y funciona para invitados de Experience Cloud. Los registros solo de fecha se convierten en eventos de todo el día; los que tienen hora la conservan.
Calendar File Location FieldcalendarLocationField✓Stringen blancoNombre de API de un campo del objeto de recurso cuyo valor pasa a ser la ubicación de cada evento del archivo de Añadir al calendario, como la dirección de una sala, o Name para la propia sala. Déjalo en blanco cuando los recursos son personas, como asesores o técnicos: ya aparecen en el título del evento, y una persona no es un lugar. Requiere Show Add to Calendar After Saving.
Success Toast Message (optional)successToastMessage✓✓✓Stringen blancoMensaje personalizado opcional al guardar correctamente. En blanco, se usa el predeterminado.
Reglas de selección
Requiredrequired✓✓✓BooleanfalseActivado, el usuario debe seleccionar al menos una fecha para que el flujo pueda avanzar a la siguiente pantalla.
Max Dates AllowedTambién aparece como Max Dates Per BookingmaxSelections✓✓✓Integer0Número máximo de fechas que puede seleccionar un usuario. 0 = sin límite.
Max Time SlotsmaxTimeSlotSelection✓✓Integer0Número máximo de franjas horarias que puede seleccionar un usuario en total (sumando todas las fechas). 0 = sin límite.
Allow Past DatesallowPastDates✓✓✓BooleanDate: true; Date Time: true; Booking: falseActivado, los usuarios pueden seleccionar cualquier fecha pasada. Desactivado, solo se pueden seleccionar hoy y fechas futuras.
Earliest Selectable DateTambién aparece como Earliest Bookable DateminDate✓✓✓Dateen blancoLa fecha más temprana que pueden seleccionar los usuarios. Las anteriores aparecen atenuadas. Para impedir reservas en el mismo día, usa mejor Minimum Notice: avanza con el reloj.
Latest Selectable DateTambién aparece como Latest Bookable DatemaxDate✓✓✓Dateen blancoLa fecha más tardía que pueden seleccionar los usuarios. Las posteriores aparecen atenuadas.
Book Up To (Days Ahead)maxDaysAhead✓✓✓Integer0Una ventana de reserva móvil: la última fecha seleccionable es hoy más este número de días, y avanza cada día. 0 significa sin límite. Si también se define Latest Selectable Date, se aplica la más temprana de las dos.
Minimum Notice (Hours)minNoticeHours✓✓✓Integer0No se puede elegir ni guardar nada que empiece antes de ahora más este número de horas. Los días anteriores aparecen atenuados y, en el día límite, se cierran las franjas más tempranas. Se vuelve a comprobar al guardar, así que una página abierta toda la noche no puede reservar dentro del plazo de antelación. 0 significa sin mínimo.
Pre-Selected DatesdefaultDates✓✓✓String[]en blancoFechas que ya están seleccionadas al abrir el calendario. En formato ISO (YYYY-MM-DD).
Blocked DatesdisabledDates✓✓✓String[]en blancoFechas concretas que no se pueden seleccionar (aparecen atenuadas). Para festivos o fechas bloqueadas. En formato ISO (YYYY-MM-DD).
Only These Dates Are SelectableavailableDates✓✓✓String[]en blancoSi se define, SOLO estas fechas se pueden seleccionar: todas las demás aparecen atenuadas. En formato ISO (YYYY-MM-DD). Útil cuando las fechas válidas vienen de otra fuente en tu flujo.
Auto-Jump to First Available DateautoJumpToFirstAvailable✓✓✓BooleanfalseActivado y con 'Only These Dates Are Selectable' definido, el calendario se abre directamente en el mes de la primera fecha disponible.
Allow Whole-Day (No Times)allowWholeDayNoTimes✓✓BooleanfalseActivado, seleccionar una fecha sin franjas horarias guarda un registro de día completo (bloquea o reserva todo el día). Las fechas con franjas horarias se guardan como registros con hora.
Registros y guardado
Parent Record IdrecordId✓✓✓Stringen blancoSi se define, el componente funciona en modo guardar con un clic y escribe registros hijos vinculados a este registro principal. Pasa un Id de registro de una salida de Obtener registros o de recordCreate (p. ej. {!recordVar.Id}). Déjalo en blanco para usar el patrón estándar de acción de análisis + bucle + crear registros.
Static Parent Record IdstaticRecordId✓✓✓Stringen blancoCaso especial: fija un Id de registro para anclar este calendario a un único registro principal. Funciona en Record Page, App Page (requiere Id estático), Home Page (requiere Id estático) y Experience Site (requiere Id estático). En una Record Page, déjalo en blanco: el registro de la página se inyecta automáticamente.
Parent Record Id FieldparentRecordIdField✓✓✓Stringen blancoSolo es necesario cuando este componente está en la página de registro de un objeto DISTINTO del principal. Introduce el nombre de API del campo de búsqueda que apunta al registro principal real. Déjalo en blanco cuando el componente está en la página del objeto principal.
Child Object API NameTambién aparece como Related Booking Object API Name; Child Object API Name (for preload)relatedObjectApiName✓✓✓Stringen blancoNombre de API del objeto donde cada fecha seleccionada se guarda como registro. Ejemplo: Appointment__c, Schedule_Entry__c. Obligatorio para guardar con un clic.
Date Field API NameTambién aparece como Date Field API Name (for preload)dateFieldApiName✓✓✓Stringen blancoNombre de API del campo Date del objeto hijo que guarda la fecha seleccionada. Ejemplo: Event_Date__c, Start_Date__c
End Date Field API NameTambién aparece como End Date FieldendDateField✓✓✓Stringen blancoNombre de API de un campo de fecha de fin en el objeto hijo. Si se define, las fechas seleccionadas contiguas se consolidan en un único registro con fecha de inicio y de fin, en lugar de un registro por fecha. Ejemplo: End_Date__c
Relationship Field API NameTambién aparece como Parent Record Relationship FieldrelationshipFieldApiName✓✓✓Stringen blancoNombre de API del campo de búsqueda del objeto hijo que lo vincula con el registro principal. Ejemplo: Account__c, Contact__c, Order__c
Load Existing DatesTambién aparece como Load Existing BookingspreloadExistingDates✓✓✓BooleantrueActivado, consulta los registros hijos existentes y muestra sus fechas en el calendario al cargar. Requiere Child Object, Date Field y Relationship Field.
Existing Dates ModeTambién aparece como Existing Bookings ModepreloadMode✓✓✓StringeditableControla cómo aparecen las fechas cargadas. Solo se aplica con Load Existing Dates activado. Valores válidos: editable, readonly. Predeterminado: editable. editable = las fechas aparecen seleccionadas y se pueden cambiar. readonly = las fechas aparecen atenuadas y no se pueden quitar. En un flujo se muestra como un cuadro de texto libre, así que escribe exactamente uno de estos valores.
Save Button LabelsaveButtonLabel✓✓✓StringGuardarTexto del botón de guardar en modo guardar con un clic. Ejemplo: 'Guardar fechas', 'Confirmar selección'
Record Name FieldrecordNameField✓✓✓Stringen blancoNombre de API de un campo de texto del objeto hijo donde se guarda una etiqueta del registro. Si se define, aparece un cuadro de texto para que los usuarios escriban una etiqueta.
Default Record NamedefaultRecordName✓✓✓Stringen blancoRellena de antemano el nombre del registro. Los usuarios pueden cambiarlo al usarlo. Ejemplo: 'Día de vacaciones', 'Reunión de equipo'.
Append Date/Time to Record NameTambién aparece como Append Date to Record NameappendDateTimeToName✓✓✓BooleantrueActivado, añade la fecha al nombre del registro.
Estado y edición
Status FieldstatusField✓✓✓Stringen blancoNombre de API de un campo de lista de selección o de estado del objeto hijo. Si se configura, aparece una lista desplegable de estados junto al nombre del registro para que los usuarios asignen un estado al seleccionar fechas. Necesario para Status Colors, Ignored Statuses, Status Field Label y Enable Edit Mode. Ejemplo: Status__c
Status ColorsstatusColors✓✓✓Stringen blancoAsignación, separada por comas, de valores de estado a colores hexadecimales. Formato: Value:#hex. Los colores de estado se muestran en las celdas de fecha del calendario. Requiere Status Field. Ejemplo: Confirmed:#22C55E, Tentative:#fbbf24, Pending:#60a5fa, Cancelled:#a1a8b5
Status Color DisplaystatusColorDisplay✓✓✓StringDate: calendar; Date Time: both; Booking: bothDónde se muestran los colores de estado. En el componente Dates solo está disponible 'calendar': las celdas de fecha del calendario se colorean según su estado.
Ignored StatusesTambién aparece como Ignored StatuseshideBookingsWithStatus✓✓✓Stringen blancoLista separada por comas de valores de estado cuyos registros se ocultan del calendario. Los registros ocultos no se dibujan, pero siguen en Salesforce. Requiere Status Field. Ejemplo: Cancelled, Rejected
Selectable Statuses (Status Picker)selectableStatuses✓✓✓Stringen blancoValores de estado, separados por comas, que puede asignar el selector de estado de la reserva. En blanco permite todos (uso interno). P. ej. 'Scheduled' para un sitio de clientes. Si solo hay un estado seleccionable, se elige automáticamente y el selector se oculta. Requiere Status Field.
Second Picklist FieldsecondStatusField✓✓✓Stringen blancoNombre de API opcional de una segunda lista de selección que el usuario elige al guardar (p. ej. Reason__c). No tiene colores: statusField controla los colores del calendario. Añádela a Hover Popover Fields para mostrarla. Funciona en flujos, App Builder y Communities.
Second Picklist LabelsecondStatusFieldLabel✓✓✓Stringen blancoEtiqueta opcional de la lista desplegable de la segunda lista de selección. En blanco, el componente genera una etiqueta legible a partir del nombre de API del campo.
Selectable Second-Picklist ValuesselectableSecondStatuses✓✓✓Stringen blancoLista opcional, separada por comas, de los valores que el usuario puede elegir en la segunda lista de selección. En blanco permite todos. Si solo se indica uno, se elige automáticamente y el selector se oculta.
Status Field LabelstatusFieldLabel✓✓✓Stringen blancoEtiqueta opcional de la lista desplegable de estados que ven los usuarios finales. NO escribas aquí un nombre de API de campo: es solo una etiqueta visible. En blanco, el componente genera una etiqueta legible a partir del nombre de API de Status Field.
Hover Popover FieldshoverFields✓✓✓Stringen blancoLista separada por comas de nombres de API de campos que se muestran al pasar el cursor sobre una fecha del calendario con registros existentes. Los campos se consultan del objeto hijo. Admite campos de relación. Solo muestra datos cuando se cargan los registros existentes (con Load Existing Dates). Ejemplo: Name, Status__c, Notes__c. Déjalo en blanco para desactivar las ventanas emergentes.
Enable Edit ModeenableEditMode✓✓✓BooleantrueActivado, los usuarios pueden hacer clic en fechas existentes para editar la fecha o el estado, o eliminar el registro. Requiere que estén configurados Status Field Y Status Colors.
Edit Button LabeleditButtonLabel✓✓✓Stringen blancoEtiqueta personalizada del botón que activa el modo edición. Si se deja en blanco, es 'Editar fechas'.
Edit Record DisplayeditRecordDisplay✓✓✓Stringen blancoPalabras clave, separadas por comas, que controlan qué campos aparecen en la lista de registros del modo edición y en qué orden. Palabras clave: name, status, time, date, resource. Si está en blanco: name, status, time. Ejemplo: name, date, status
Franjas horarias
Time Display ModetimeDisplayMode✓StringgridCómo se presentan las horas. Valores válidos: grid, dropdown. Predeterminado: grid. grid = cuadrícula visual de franjas en la que los usuarios hacen clic o arrastran para elegir bloques de tiempo. dropdown = selectores de hora lightning-input. Usa Allow Different Times Per Date para elegir entre selectores compartidos o por fecha en modo dropdown. En un flujo se muestra como texto libre, así que escribe exactamente uno de estos valores.
Time Interval (Minutes)También aparece como Time Slot Interval (Minutes)timeInterval✓✓Integer30Minutos entre franjas horarias. Sirve cualquier número entero; lo habitual son 15, 30 o 60 minutos. Ejemplo: 30 muestra 9:00, 9:30, 10:00.
Earliest TimeminTime✓String09:00Hora más temprana del selector de hora. Usa formato de 24 horas (HH:mm). Ejemplos: 08:00 (las 8 de la mañana), 13:00 (la 1 de la tarde). En blanco empieza a las 0:00.
Latest TimemaxTime✓String18:00Hora más tardía del selector de hora. Usa formato de 24 horas (HH:mm). Ejemplos: 17:00 (las 5 de la tarde), 20:00 (las 8 de la tarde). En blanco termina a las 23:30.
Start Time FieldTambién aparece como Start Time Field API NamestartTimeField✓Stringen blancoNombre de API de un campo Time del objeto hijo para la hora de inicio de la franja. Ejemplo: Start_Time__c
End Time FieldTambién aparece como End Time Field API NameendTimeField✓Stringen blancoNombre de API de un campo Time del objeto hijo para la hora de fin de la franja. Ejemplo: End_Time__c
Allow Different Times Per DateallowDifferentTimes✓✓BooleanfalseActivado y con Time Display Mode en 'dropdown', cada fecha tiene su propio selector de hora (agrupados por semana). Desactivado, todas las fechas comparten una hora. No tiene efecto cuando Time Display Mode es 'grid'.
Enable End TimeenableEndTime✓BooleantrueActivado, muestra una lista desplegable de hora de fin junto a la de hora de inicio, y devuelve startTime y endTime en la salida JSON. Solo se aplica en modo dropdown (Time Display Mode = 'dropdown'). No tiene efecto en modo grid.
Group Time Slots by PeriodgroupTimeSlotsByPeriod✓✓BooleanfalseActivado, las franjas horarias se agrupan en secciones Mañana, Tarde y Noche. Desactivado (predeterminado), muestra una cuadrícula plana. Solo se aplica cuando Time Display Mode es 'grid'.
Time Grid OnlytimeGridOnly✓✓BooleanfalseActivado, oculta por completo el calendario y muestra SOLO la cuadrícula de franjas horarias para una fecha implícita. El usuario elige franjas y los registros se guardan en el registro anfitrión con guardar con un clic (sin paso de elegir fecha). La fecha implícita sale de Time Grid Date; si no, de Time Grid Date Field; y si no, es hoy.
Time Grid DatetimeGridDate✓✓Stringen blancoFecha ISO explícita opcional (YYYY-MM-DD) para la fecha implícita cuando Time Grid Only está activado. Tiene la máxima prioridad. Déjalo en blanco para leerla de Time Grid Date Field o usar hoy.
Time Grid Date FieldtimeGridDateField✓✓Stringen blancoNombre de API opcional de un campo Date del registro anfitrión del que leer la fecha implícita cuando Time Grid Only está activado (en una página de registro). Solo se usa si Time Grid Date está en blanco. Ejemplo: Appointment_Date__c
Disable Time Slot Grid (Full-Day Mode)disableTimeSlotGrid✓BooleanfalseActivado, oculta la cuadrícula de franjas horarias para reservas de día completo en las que solo importa la fecha. Desactivado (predeterminado), muestra la cuadrícula para reservar por horas con precisión.
Recursos y capacidad
Resource Object API NameresourceObjectApiName✓Stringen blancoNombre de API del objeto que guarda tus recursos reservables. Cada registro = un recurso reservable que aparece en la lista desplegable. Ejemplo: Room__c, Equipment__c, Vehicle__c, Staff__c
Resource Name FieldresourceNameField✓StringNameNombre de API del campo que contiene el nombre visible del recurso. Normalmente 'Name'.
Resource Filter Field (optional)resourceFilterField✓Stringen blancoNombre de API de un campo del objeto de recurso que limita qué recursos aparecen en el selector. Se usa junto con Resource Filter Value. Usa ';' para combinar varios campos (Y). Ejemplos: 'Active__c' (un campo booleano), 'Type__c' (una lista de selección), 'Type__c;Building__c' (DOS campos combinados con Y). En blanco se muestran todos los recursos.
Resource Filter Value (optional)resourceFilterValue✓Stringen blancoValor o valores que debe tener el campo de filtro. ',' entre valores de UN campo = O (cláusula IN). ';' entre valores = Y entre varios campos (debe coincidir con el número de campos de Resource Filter Field). Ejemplos: 'true': Active=true. 'Conference Room': Type=Conference Room. 'North,South': Building IN North o South. 'Conference Room;North': Type=Conference Room Y Building=North. 'Conference Room;North,South': Type=Conference Room Y Building IN North o South.
Business Hours Start FieldbusinessHoursStartField✓Stringen blancoNombre de API del campo Time del objeto de recurso que define cuándo pasa a estar disponible cada día. Ejemplo: Business_Hours_Start__c (con valor 08:00:00.000Z para las 8:00). En blanco se usan franjas horarias para todo el intervalo configurado.
Business Hours End FieldbusinessHoursEndField✓Stringen blancoNombre de API del campo Time del objeto de recurso que define la última hora disponible de cada día. Ejemplo: Business_Hours_End__c (con valor 18:00:00.000Z para las 18:00).
Allow Multiple ResourcesTambién aparece como Allow Booking Multiple ResourcesallowMultipleResources✓BooleanfalseActivado, los usuarios pueden seleccionar varios recursos con casillas y reservarlos todos a la vez. La cuadrícula de horarios muestra solo las franjas libres en TODOS los recursos seleccionados. Ejemplo: reservar una sala Y un proyector al mismo tiempo.
Allow No ResourceTambién aparece como Allow Save Without Picking a ResourceallowNoResource✓BooleanfalseActivado, los usuarios pueden Guardar sin elegir ningún recurso: la búsqueda al recurso del registro guardado queda vacía. Pensado para quien registra cierres o fechas bloqueadas, donde un recurso en blanco significa 'se aplica a todos'. Los calendarios que leen esos cierres con un filtro por recurso (blockedDatesResourceField) tratan un recurso vacío como válido para toda la región, así que, junto con allowNoResource, se obtiene el patrón de 'asesor opcional'. Déjalo desactivado (predeterminado) en las reservas normales, donde siempre hay que elegir un recurso.
Booking Object API NameresourceBookingObject✓Stringen blancoNombre de API del objeto donde se crean los registros de reserva. Un registro por fecha y por recurso. Ejemplo: Room_Booking__c, Equipment_Reservation__c
Booking Date FieldbookingDateField✓Stringen blancoNombre de API del campo Date del objeto de reserva. Debe ser de tipo Date (no DateTime). Ejemplo: Booking_Date__c
Booking Resource FieldbookingResourceField✓Stringen blancoNombre de API del campo de búsqueda del objeto de reserva que apunta al recurso. Ejemplo: Room__c (búsqueda de Room_Booking__c a Room__c)
Booking Start Time FieldbookingStartTimeField✓Stringen blancoNombre de API del campo Time del objeto de reserva para la hora de inicio. Ejemplo: Start_Time__c. Déjalo en blanco para reservas por día, sin franjas horarias.
Booking End Time FieldbookingEndTimeField✓Stringen blancoNombre de API del campo Time del objeto de reserva para la hora de fin. Ejemplo: End_Time__c. El sistema calcula la hora de fin a partir de las franjas seleccionadas.
Book Button LabelresourceBookButtonLabel✓StringBookTexto del botón que confirma la reserva. Ejemplo: 'Reservar ahora', 'Reservar', 'Confirmar reserva'
Capacity FieldcapacityField✓Stringen blancoNombre de API de un campo Number del objeto de recurso que define el máximo de reservas simultáneas por franja horaria. Si se define, las franjas muestran un indicador X/Y y siguen disponibles hasta llenarse. Ideal para aulas de formación, puestos compartidos o inscripciones a clases. Déjalo en blanco para una reserva por franja. Ejemplo: Capacity__c
Capacity Aggregation (multi-resource)capacityAggregation✓StringCombinedSOLO EN MODO DE RESERVA CON CAPACIDAD (requiere Capacity Field). Controla cómo se calcula la capacidad X/Y cuando se seleccionan varios recursos. COMBINED (predeterminado) suma reservas Y capacidades: lo mejor cuando cada recurso es un inventario independiente (p. ej. 4 registros en 4 salas con capacidad 5 cada una = 4/20). DISTINCT cuenta eventos únicos (los registros con la misma fecha + hora de inicio + hora de fin en distintos recursos cuentan como UNO) y usa la MAYOR capacidad individual: lo mejor cuando un evento ocupa varios recursos a la vez (4 registros en 4 salas = 1/5).
Show Availability CountshowAvailabilityCount✓BooleantrueActivado, muestra detalles de disponibilidad en el panel de recursos (p. ej. '3/5 días disponibles'). Ayuda a los usuarios a elegir el mejor recurso antes de reservar. Requiere que esté configurado Resource Object API Name.
Conflictos
Conflict BehaviorconflictBehavior✓✓StringblockControla qué ocurre cuando las fechas seleccionadas chocan en horario con registros existentes. 'block' (predeterminado): se bloquea el guardado y se resaltan las fechas en conflicto. 'skip': se guarda, pero se omiten las fechas en conflicto. 'allow': sin comprobación de conflictos. Solo se aplica en modo de cuadrícula compartida (Time Display Mode='grid' + Allow Different Times Per Date=OFF).
Buffer Between Bookings (Minutes)bufferMinutes✓✓Integer0Minutos que se dejan libres después de cada reserva existente para limpieza o preparación, por recurso en Booking. Una hora que empezaría dentro del margen cuenta como ocupada en todos los lugares donde se muestra la disponibilidad (cuadrícula de horarios, recuentos de capacidad, arrastre en Semana) y al guardar, y Conflict Behavior decide qué ocurre. Ejemplo: 15 deja un cuarto de hora entre reuniones en la misma sala.
Conflict Look-Ahead DaysconflictLookAheadDays✓✓Integer360Cuántos días por delante se comprueban los conflictos de franjas y se carga la disponibilidad. Predeterminado: 360. Redúcelo para mejorar el rendimiento en objetos con mucho volumen.
Sub-bloques
Consolidate Time SpanconsolidateTimeSpan✓✓BooleanfalseActivado, las franjas seleccionadas se devuelven como un único rango desde el inicio de la primera franja hasta el fin de la última. Los huecos entre franjas seleccionadas se vuelven naranjas automáticamente y se registran como sub-bloques. Úsalo cuando necesites el turno completo (p. ej. de 9:00 a 17:00) y registrar las pausas por separado. Solo se aplica en modo grid.
Sub-Block Button LabelsubBlockModeButtonLabel✓✓Stringen blancoSi se define, añade un botón conmutador para que los usuarios marquen franjas a mano como sub-bloques (naranja). Útil para sub-bloques en los extremos del turno. Déjalo en blanco para usar solo el naranja automático. Ejemplo: 'Marcar como pausa', 'Marcar como comida'. Requiere Consolidate Time Span activado.
Show Sub-Block Toggle ButtonshowSubBlockButton✓✓BooleanfalseActivado, muestra el botón conmutador de sub-bloques en el encabezado de la cuadrícula de horarios. Requiere Consolidate Time Span activado y Sub-Block Button Label definido.
Sub-Block Object API NamesubBlockObjectApiName✓✓Stringen blancoNombre de API del objeto hijo para los registros de sub-bloque. Ejemplo: Work_Break__c. Requiere Consolidate Time Span activado y el modo guardar con un clic (Parent Record Id definido).
Sub-Block Parent Lookup FieldsubBlockParentLookupField✓✓Stringen blancoCampo de búsqueda del objeto de sub-bloque que lo vincula al registro principal. Ejemplo: Shift__c. Obligatorio si se define Sub-Block Object.
Sub-Block Date FieldsubBlockDateField✓✓Stringen blancoCampo de fecha del objeto de sub-bloque. Ejemplo: Break_Date__c. Obligatorio si se define Sub-Block Object.
Sub-Block Start Time FieldsubBlockStartTimeField✓✓Stringen blancoCampo de hora de inicio del objeto de sub-bloque. Ejemplo: Break_Start__c. Obligatorio si se define Sub-Block Object.
Sub-Block End Time FieldsubBlockEndTimeField✓✓Stringen blancoCampo de hora de fin del objeto de sub-bloque. Ejemplo: Break_End__c. Obligatorio si se define Sub-Block Object.
Sub-Block Name FieldsubBlockNameField✓✓Stringen blancoCampo de texto del objeto de sub-bloque para guardar una etiqueta. Ejemplo: Break_Name__c. Obligatorio si se define Sub-Block Object.
Fechas bloqueadas
Blocked Dates ObjectblockedDatesSourceObject✓✓✓Stringen blancoNombre de API de un objeto del que se consultan las fechas que no se pueden seleccionar. Ejemplo: Public_Holiday__c
Blocked Dates Date FieldblockedDatesDateField✓✓✓Stringen blancoNombre de API del campo Date del objeto de fechas bloqueadas. Requiere que esté definido Blocked Dates Object.
Blocked Dates Start Time FieldblockedDatesStartTimeField✓✓✓Stringen blancoOpcional: campo Time del objeto de bloqueos que marca el INICIO de un cierre de parte del día. Si se definen los campos de hora de inicio y de fin y un registro bloqueado tiene ambos, solo se cierra ese rango horario en la fecha (el resto sigue disponible). Déjalo en blanco para bloquear el día completo.
Blocked Dates End Time FieldblockedDatesEndTimeField✓✓✓Stringen blancoOpcional: campo Time del objeto de bloqueos que marca el FIN de un cierre de parte del día. Va junto con Blocked Dates Start Time Field.
Blocked Dates Resource FieldblockedDatesResourceField✓✓✓Stringen blancoOpcional: limita un cierre a un solo recurso. Indica el nombre de API de un campo de búsqueda o de recurso del objeto de bloqueos; cuando el recurso de un registro bloqueado coincide con el recurso seleccionado en el calendario, solo ese recurso se cierra en ese rango horario. En blanco, cada cierre se aplica a TODOS los recursos (toda la región). El bloqueo en sí lo activa Blocked Dates Source Object, no este campo. Solo tiene sentido con reserva de recursos.
Blocked Dates Filter FieldblockedDatesFilterField✓✓✓Stringen blancoOpcional: campo de filtro del objeto de bloqueos. Dos modos: (a) modo valor: si Blocked Dates Filter Value está definido, limita los registros bloqueados a <field> = <value> (p. ej. Status__c = Cancelled). (b) modo registro principal: si Filter Value está en blanco, trata este campo como una búsqueda al registro actual y limita por <field> = recordId. Déjalo en blanco para bloquear de forma global.
Blocked Dates Filter ValueblockedDatesFilterValue✓✓✓Stringen blancoOpcional: valor con el que filtrar Blocked Dates Filter Field. Si se define, los registros bloqueados deben cumplir <filterField> = <filterValue> (p. ej. Status__c = Cancelled). Permite que varias categorías de bloqueos convivan en la misma tabla: cada calendario elige qué categoría le afecta.
Salidas del flujo
Output Date Ranges as JSONoutputAsJson✓✓BooleanfalseActivado, rellena la salida Date Ranges JSON con las fechas consecutivas agrupadas en rangos. Necesario si quieres usar la acción MultiDatePickParser para recorrer los rangos en un bucle.
Selected Dates (Output)selectedDates✓✓String[]en blancoSALIDA: matriz con todas las fechas seleccionadas en formato ISO (YYYY-MM-DD). Úsala en tu flujo para crear registros o pasarla a la siguiente pantalla.
Date Ranges JSON (Output)selectedDateRangesJson✓✓Stringen blancoSALIDA: JSON con las fechas consecutivas agrupadas en rangos. Solo se rellena con 'Output Date Ranges as JSON' activado. Pásalo a MultiDatePickParser para recorrerlo en el flujo.
Dates With Times JSON (Output)selectedDatesWithTimesJson✓Stringen blancoSALIDA: cadena JSON con cada fecha y su hora seleccionada. Pásala a MultiDatePickParser para recorrerla en tu flujo.
Sub-Blocks JSON (Output)subBlocksJson✓Stringen blancoSALIDA: JSON con las ventanas de sub-bloque (huecos o pausas) por fecha. Solo se rellena con Consolidate Time Span activado. Úsalo en un bucle del flujo para crear registros hijos.
Successful Bookings Count (Output)bookingSuccessCount✓Integeren blancoSALIDA: número de registros de reserva creados correctamente. Úsalo en tu flujo para mostrar un mensaje de confirmación.
Conflict Dates (Output)bookingConflictDates✓String[]en blancoSALIDA: lista de fechas en las que no se pudieron crear reservas por conflictos con reservas existentes.

16. Seguridad y accesibilidad

  • Aprobado en la revisión de seguridad de Salesforce AppExchange.
  • 100 % nativo. Tus datos se quedan en tu organización de Salesforce. Sin servidores externos ni llamadas externas. Consulta Confianza y seguridad.
  • Siempre con tus permisos. Cada lectura y cada guardado se ejecutan con el acceso del propio usuario, así que los permisos de objeto, la seguridad a nivel de campo y la colaboración se aplican en cada registro.
  • Accesible. WCAG 2.1 AA, probado con axe-core. VPAT 2.5 completo.
  • 9 idiomas: inglés, español, francés, alemán, japonés, hindi, portugués (Brasil), italiano y chino (simplificado).

17. ¿Preguntas o errores?

¿Falta algo en esta guía o algo no funciona? Escribe a support@multidatepick.com.

¿Listo para verlo en tu organización?

US$20 por usuario al mes, todas las funciones incluidas y prueba gratuita de 30 días. Próximamente en Salesforce AppExchange.