Añadir el orquestador PDF a tu workfloo

Añadir el orquestador PDF

Haz clic en el nodo en el que quieres añadir el orquestador. Observarás la pantalla con los orquestadores y conectores de workfloo; elige PDF y haz clic en siguiente.

Se mostrará una ventana modal en la que deberás insertar HTML y código JavaScript, mediante los cuales podrás obtener y utilizar datos de pasos anteriores de la ejecución de tu workfloo.

A continuación te compartimos un ejemplo de un html para el orquestado PDF

<!DOCTYPE html>
<html lang="es">

<head>
  <meta charset="UTF-8">
  <title>TÍTULO DE TU PDF</title>
  <style>
    body {
      font-family: 'Times New Roman', Times, serif;
      line-height: 1.6;
      margin: 50px;
      max-width: 800px;
      margin-left: auto;
      margin-right: auto;
    }

    .contrato {
      border: 1px solid #ccc;
      padding: 40px;
    }

    .firma {
      margin-top: 80px;
      text-align: center;
    }

    .linea-firma {
      border-bottom: 1px solid #000;
      width: 300px;
      margin: 0 auto 10px;
    }

    h1 {
      text-align: center;
      margin-bottom: 40px;
    }

    h2 {
      margin-top: 30px;
      border-bottom: 1px solid #000;
      padding-bottom: 5px;
    }

    .resumen-section {
      margin-top: 15px;
      margin-bottom: 25px;
      padding-left: 10px;
    }

    .resumen-linea {
      margin-bottom: 6px;
    }
  </style>
</head>

<body>
  <script>
    document.addEventListener("DOMContentLoaded", function () {
      if (typeof workfloo === "undefined") {
        console.error("No se encontró la variable global 'workfloo'");
        return;
      }

      // ✅ Corrección robusta: normaliza el nombre a minúsculas y quita acentos
      const normalize = (str) => str
        ?.toLowerCase()
        .normalize("NFD")
        .replace(/[\u0300-\u036f]/g, ""); // elimina tildes

      // Buscar el nodo que contenga la palabra "buro"
      const buroNode = workfloo.nodes?.find(n => normalize(n.name || "").includes("buro"));

      if (!buroNode) {
        console.warn("⚠️ No se encontró un nodo de buró en workfloo.nodes");
        console.log("Nodos disponibles:", workfloo.nodes?.map(n => n.name));
      }

      const resumen = buroNode?.response?.resumenReporte?.[0] || {};

      console.log("Nodo encontrado:", buroNode?.name);
      console.log("Resumen obtenido:", resumen);

      // Extraer los tres campos solicitados
      const fechaAntigua = resumen.fechaAperturaCuentaMasAntigua ?? "No disponible";
      const fechaReciente = resumen.fechaAperturaCuentaMasReciente ?? "No disponible";
      const fechaIngresoBD = resumen.fechaIngresoBD ?? "No disponible";

      // Reemplazos
      const replacements = {
        fechaGeneracion: new Date().toLocaleDateString("es-MX"),
        idReporte: workfloo.id ?? "",
        estado: workfloo.status ?? "",
        origen: workfloo.origin ?? "",
        fechaAperturaCuentaMasAntigua: fechaAntigua,
        fechaAperturaCuentaMasReciente: fechaReciente,
        fechaIngresoBD: fechaIngresoBD
      };

      // Aplicar reemplazos al documento
      const contratoDiv = document.getElementById("documento");
      let contenidoHtml = contratoDiv.innerHTML;

      for (const key in replacements) {
        const regex = new RegExp(`{{${key}}}`, "g");
        contenidoHtml = contenidoHtml.replace(regex, replacements[key]);
      }

      contratoDiv.innerHTML = contenidoHtml;
    });
  </script>

  <div class="contrato" id="documento">
    <h1>Descripción del título del documento</h1>

    <p>
      texto para el documento 
    </p>

    <h2>sección del documento</h2>

    <p>
      Ejemplo de texto para el documento con datos del workfloo: De acuerdo con los datos obtenidos en el flujo de verificación, el reporte con ID
      <strong>{{idReporte}}</strong>, de origen <strong>{{origen}}</strong> y estado <strong>{{estado}}</strong>,
      presenta la siguiente información relevante:
    </p>

    <div class="resumen-section">
      <div class="resumen-linea"><strong>Fecha apertura cuenta más antigua:</strong> {{fechaAperturaCuentaMasAntigua}}</div>
      <div class="resumen-linea"><strong>Fecha apertura cuenta más reciente:</strong> {{fechaAperturaCuentaMasReciente}}</div>
      <div class="resumen-linea"><strong>Fecha ingreso BD:</strong> {{fechaIngresoBD}}</div>
    </div>

    <p>
      <strong>Otra sección del documento.</strong> Texto para dicha sección.
    </p>

    <div class="firma">
      <p>Más texto para el documento</p>
      <br><br>
      <div class="linea-firma"></div>
      <p>Más texto para el documento</p>
    </div>
  </div>

</body>

</html>