Skip to content

Buscar el siguiente día hábil a partir de una fecha específica

Última actualización el 7 de abril de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

No queremos trabajar los fines de semana o días festivos, ¡todos lo entendemos! Si es así, ¿cree que nuestros clientes o prospectos lo hacen ?

Si tiene dudas, intente enviar un correo electrónico a sus prospectos para comprar una casa en Navidad. ¿O qué tal enviar un correo electrónico de renovación de contrato a sus clientes el fin de semana? Tasa de éxito si estas acciones no es demasiado difícil de estimar, ¿verdad?

Entiendes mi punto.

Este blog es una continuación de mi blog anterior, Omitir el flujo programado en fines de semana y días festivos , donde discutimos cómo averiguar si la fecha objetivo especificada ocurre dentro del horario comercial. Este artículo irá un paso más allá y explicará cómo determinar el siguiente día hábil a partir de la fecha indicada teniendo en cuenta el horario comercial y los días festivos.

Comencemos con un caso de uso comercial.

Objetivos:

En este artículo, el lector aprenderá lo siguiente:

  • Cuándo usar la acción Invocable de Apex con Flow
  • Comprender la clase BusinesshHours y sus métodos asociados
  • Comprender la anotación @InvocableMethod
  • Cómo llamar a un método de Apex usando Flow para averiguar la próxima fecha en que el horario comercial está abierto

Warren Mason es administrador de sistemas en Gurukul on Cloud (GoC). Creó la automatización para enviar la notificación automática por correo electrónico al cliente después de la creación de la oportunidad.

El proceso funciona a las mil maravillas hasta que Warren recibe una solicitud de mejora para enviar alertas por correo electrónico sobre el horario laboral de la empresa. ¡¡Ay!! Ayudaremos a Warren a averiguar el siguiente día hábil y lo almacenaremos en un campo personalizado Next_workday__c en el objeto de oportunidad .

Enfoque de Campeón de Automatización (I-do):

Si bien esto se puede resolver con varias herramientas de automatización como Apex Trigger y otras , usaremos Salesforce Flow y llamaremos a un método de Apex . Para llamar a un método de Apex , agregue el elemento Acción a su Flujo de Salesforce y seleccione una clase de Apex con una anotación @InvocableMethod .

En este artículo, utilizaremos la clase de base de datos call BusinessHours . Asegúrate de revisarlo. Utilice el
método nextStartDate que devuelve la próxima fecha cuando el horario comercial está abierto. Si la fecha objetivo especificada se encuentra dentro del horario comercial, se devuelve esta fecha objetivo. A partir del lanzamiento de Spring'23 , no es posible acceder directamente al método BusinessHours desde Flow, por eso estamos usando la clase Apex Invocable.

Antes de discutir la solución, permítame mostrarle un diagrama del proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo para comprenderlo.
Comencemos a construir este proceso de automatización.

Práctica guiada (nosotros hacemos):

Hay 4 pasos para resolver el requisito empresarial de Warren utilizando el flujo activado por registro después de guardar . Debemos:

  1. Establecer horario comercial y días festivos
  2. Cree un campo personalizado en el objeto Oportunidad para almacenar el próximo día laboral
  3. Crear clase de Apex y clase de prueba
  4. Flujo de fuerza de ventas
    1. Definir propiedades de flujo para el flujo desencadenado por registro
    2. Agregar acción: llame a NextStartDate Invocable Apex Class
    3. Agregue el elemento Actualizar registros para actualizar la oportunidad

Paso 1: Configuración del horario comercial y días festivos

  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, escriba Horario comercial .
  3. Establezca el horario comercial y los días festivos , como se muestra en la siguiente captura de pantalla:

Paso 2: cree un campo personalizado en el objeto de oportunidad para almacenar el próximo día laboral

  1. Haga clic en Configuración .
  2. En el Administrador de objetos, escriba Oportunidad .
  3. Seleccione Campos y relaciones , luego haga clic en Nuevo .
  4. Seleccione Fecha/Hora como Tipo de datos, luego haga clic en Siguiente .
  5. Ingrese Etiqueta de campo y haga clic en la tecla de tabulación, se completará el Nombre de campo .
    1. Ingrese los detalles:
      1. Como práctica recomendada, introduzca siempre una descripción y un texto de ayuda .
      2. Haga clic en el botón Siguiente .
  6. Establezca la seguridad a nivel de campo para los perfiles .
  7. Agregue este campo a Diseño de página .
  8. Haga clic en Guardar .

Paso 3: Cree una clase de Apex y una clase de prueba

Ahora, tenemos que entender una nueva anotación de Apex, es decir , . @MétodoInvocable . Esta anotación nos permite usar un método de Apex como algo que se puede llamar desde Flow y Apex. Los métodos invocables se llaman con la API REST y se usan para invocar un solo método de Apex. Los métodos invocables tienen valores de entrada y salida dinámicos y admiten llamadas de descripción.

La clase NextStartDate contiene un único método que pasa la Fecha/Hora para encontrar si la fecha objetivo está dentro del horario comercial dado, se devuelve la fecha objetivo. La hora devuelta está en la zona horaria local. Cree la siguiente clase en su organización.

  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, escriba Clases de Apex .
  3. Haga clic en el botón Nuevo .
  4. Copie el código de GitHub y péguelo en su clase de Apex.
  5. Haga clic en Guardar.

público sin compartir clase NextStartDate { @InvocableMethod(label = 'Encuentra la próxima fecha a partir de la fecha objetivo cuando se reabre el horario comercial' iconName='slds:custom:custom63') public static List<response> calculeNextStartDate(List<Request> requestList) { List<response> finalList = new List<response>(); BusinessHours bh = [SELECCIONE Id FROM BusinessHours WHERE IsDefault=true]; para (Solicitud de solicitud: lista de solicitudes){ respuesta resp = nueva respuesta(); resp.nextStart=Horarios.nextStartDate(bh.id, req.targetDate); finalList.add(resp); } volver listafinal; } Solicitud de clase pública{ @InvocableVariable(etiqueta = 'Fecha objetivo' requerido = verdadero) fecha y hora pública fecha de destino; } Respuesta de clase pública { @InvocableVariable (etiqueta='Siguiente Inicio') fecha y hora pública nextStart; }
}

Paso 4.1: Definir propiedades de flujo

  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, escriba Flujos .
  3. Seleccione Flujos y luego haga clic en Nuevo flujo .
  4. Seleccione el flujo activado por registro opción, haga clic en Crear y configure el flujo de la siguiente manera:
    1. Objeto : Oportunidad
    2. Activar el flujo cuando : se crea un registro
    3. Establecer criterios de entrada
      1. Requisitos de condición: Ninguno
    4. Optimice el flujo para la acción y los registros relacionados
  5. Haga clic en Listo .

Paso 4.2: Adición de una acción para llamar a una clase de Apex invocable

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Acción .
  2. Seleccione la clase de Apex invocable NextStartDate .
  3. Ingrese un nombre en el campo Etiqueta : el nombre de la API se completará automáticamente.
  4. Establecer valores de entrada:
    1. Campo : Fecha objetivo
    2. Valor : {!$Record.CreatedDate}
  5. Almacenar valores de salida
    1. Campo : Siguiente inicio
    2. Valor : {!$Record.Next_Workday__c}
  6. Haga clic en Listo .

Paso 4.3: Adición de un elemento Actualizar registros para actualizar la oportunidad

El siguiente paso es actualizar el campo siguiente día laborable de la oportunidad. Usaremos los registros de actualización   elemento.

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Actualizar registros .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. Para obtener información sobre cómo encontrar registros para actualizar y establecer sus valores, seleccione Usar los ID y todos los valores de campo de un registro o colección de registros.
  4. Seleccionar registro(s) para actualizar
    1. Registro o colección de registros: {!$Record}
  5. Haga clic en Listo.


Al final, Warren's Flow se verá como la siguiente captura de pantalla:


Una vez que todo se vea bien, realice los siguientes pasos:

  1. Haga clic en Guardar .
  2. Ingrese la etiqueta de flujo, el nombre de la API se completará automáticamente.
  3. Haga clic en Mostrar avanzado .
  4. Versión de API para ejecutar el flujo : 57
  5. Etiqueta de entrevista : Próxima fecha de inicio {!$Flow.CurrentDateTime}
  6. Haga clic en Guardar .

¡Casi llegamos! Una vez que todo se vea bien, haga clic en Activar .

Prueba de concepto

Evaluación formativa:

¡Quiero saber de ti!

¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2023/04/07/find-next-business-day-from-a-specified-date-2/

Últimas novedades 
de EGA Futura
1954
Desde hace más de 25 años potenciamos a las Empresas de Iberoamérica

🎬 Video de Juan Manuel Garrido » Claves para tu Productividad diaria 🙌✅

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Conceptos básicos con EGA Futura Windows

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Configuración de EGA Futura Windows

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Funcionamiento con EGA Futura Windows

🎬 Video de EGA Futura » Configuración de la Plataforma EGA Futura

🎬 Video de EGA Futura » Configuración de usuario en EGA Futura

🎬 Video de EGA Futura » Como automatizar la publicación en Redes Sociales?

🎬 Video de Juan Manuel Garrido » Cómo restaurar la configuración de fábrica de EGA Futura Windows sin perder la información

🎬 Video de Juan Manuel Garrido » Factura electrónica: Prueba de Factura Electronica previa a la activacion

🎬 Video de EGA Futura » Como se registran los Beneficios de cada Empleado en la base de datos de EGA Futura

🎬 Video de EGA Futura » EGA Futura Time Clock » Reloj de Control horario y asistencia

🎬 Video de EGA Futura » Como registrar Observaciones en un Empleado dentro de EGA Futura People?

🎬 Video de EGA Futura » Cómo registrar la Educación de cada Empleado en EGA Futura People?

🎬 Video de EGA Futura » Como hacer la Desvinculación de un Empleado? (Offboarding)

🎬 Video de EGA Futura » Como registrar Habilidades o Skills de empleados dentro de EGA Futura

🎬 Video de EGA Futura » Como hacer el Onboarding o Proceso de Incorporación de un Empleado?

🎬 Video de EGA Futura » Cómo administrar Turno de trabajo dentro de EGA Futura

🎬 Video de EGA Futura » Que es un Ticket interno dentro de la Plataforma EGA Futura

🎬 Video de EGA Futura » Que son los Entrenamientos de Empleado en EGA Futura people?

🎬 Video de EGA Futura » Qué son los Epics dentro de EGA Futura

🎬 Video de EGA Futura » Qué es EGA Futura People?

🎬 Video de EGA Futura » EGA Futura People » Asistencias

🎬 Video de EGA Futura » Soporte EGA Futura » Software de Gestión Windows vs Software de Gestión Nube 🤩

🎬 Video de EGA Futura » ツ Comparando un Objeto con un Fichero

🎬 Video de EGA Futura » ✍( ͡* ͜ʖ ͡*) ¿Qué es una Aplicación?

Buscar el siguiente día hábil a partir de una fecha específica
Buscar el siguiente día hábil a partir de una fecha específica