Novedades Power Platform

Para la Transformación Digital e Innovación Tecnológica

Novedades Power Platform

Para la Transformación Digital e Innovación Tecnológica

Power AutomatePower Platform

Flujo Automatizado para la Recepción de Facturas en Power Automate (Paso a paso)


Recepción de Facturas

🎯 Objetivo del flujo

Este flujo de Power Automate Cloud automatiza la recepción de facturas por correo, procesa adjuntos XML, extrae datos clave de la factura, consolida la información en un Excel y organiza los archivos en una estructura de carpetas por RUC / Año / Mes / Día. ✅


Flujo Recepción de Facturas (26 descargas realizadas)

(6 descargas realizadas)

🧩 Conectores y componentes clave

  • Outlook (Office 365): leer adjuntos del correo.
  • OneDrive for Business: crear/buscar/eliminar archivos y guardar XML.
  • Excel Online (Business): insertar filas en una tabla del archivo Excel.
  • Scopes + Condiciones + For each: estructura modular y controlada del flujo.

🧭 Arquitectura del flujo (Scopes principales)

1) 🧱 Scope: Inicializa Variables

Aquí se definen los “parámetros base” que usará todo el proceso.

✅ Paso a paso

  1. Compose – Nombre_CARPETA
    • Define la carpeta raíz: «CARPETA».
  2. Compose – Nombre_Excel
    • Define el archivo de consolidación: «FACTURAS.xlsx».
  3. Compose – Archivo_Excel
    • Contiene el archivo Excel en Base64 (plantilla embebida) para crearlo si aún no existe.

🔎 Por qué es importante: este patrón convierte el flujo en reutilizable: cambias “CARPETA” y «FACTURAS.xlsx» y el resto se adapta.


2) 📁 Scope: Genera Archivo Excel

Este bloque garantiza que exista el Excel antes de insertar datos.

✅ Paso a paso

  1. Crear_Temporal (OneDrive)
    • Crea un archivo temporal en /CARPETA (por ejemplo GUID.txt con “OK”).
    • 👉 Se usa como “ancla” para asegurar acceso/creación y evitar problemas de disponibilidad.
  2. Buscar_archivos_en_la_carpeta_por_ruta_de_acceso (OneDrive Search)
    • Busca FACTURAS.xlsx dentro de /CARPETA.
  3. Condición – Existe_Excel
    • Si la búsqueda devuelve 0 resultados, entonces:
    • Crear_archivo_Excel: crea /CARPETA/FACTURAS.xlsx usando el contenido de Archivo_Excel (Base64).
  4. Eliminar_Temporal
    • Elimina el archivo temporal para no ensuciar la carpeta.

✅ Resultado: siempre tendrás el Excel listo para consolidar.


3) 🔁 Scope: Recorre Archivos

Este bloque procesa cada adjunto del correo.

✅ Paso a paso

  1. For each – attachments
    • Itera todos los adjuntos del mensaje: triggerOutputs()?['body/attachments']
  2. Obtener_datos_adjuntos (V2) – Outlook
    • Descarga el adjunto usando messageId y attachmentId.
  3. Condición – Existe_XML
    • Solo continúa si el tipo de contenido es text/xml.
    • Si NO es XML, lo ignora (actualmente no registra el descarte).

🧾 Extracción de datos del XML (Scope: Extrae XML)

Dentro de “Existe_XML”, el flujo transforma el contenido y extrae campos con XPath.

✅ Paso a paso

  1. Redactar_XML
    • Convierte el adjunto:
    • base64ToString(contentBytes)xml()
    • Resultado: objeto XML listo para XPath.
  2. Composes con XPath (campos clave)
    • Serie/Número (Invoice/ID)
    • Fecha (Invoice/IssueDate)
    • Tipo Comprobante (Invoice/InvoiceTypeCode)
    • Moneda (Invoice/DocumentCurrencyCode)
    • RUC y Razón Social Emisor (AccountingSupplierParty…)
    • RUC y Razón Social Cliente (AccountingCustomerParty…)
    • Subtotal (LegalMonetaryTotal/LineExtensionAmount)
    • IGV (TaxTotal/TaxAmount)
    • Total (LegalMonetaryTotal/PayableAmount)

📌 Mapeo de datos hacia Excel

Luego de extraer, el flujo inserta una fila en la tabla Facturas dentro de FACTURAS.xlsx.

✅ Acción

  • Excel Online (Business) – Agregar_una_fila_a_una_tabla
    • Archivo: /CARPETA/FACTURAS.xlsx
    • Tabla: Facturas
    • Columnas alimentadas con los valores extraídos (RUC, Razón social, fecha, montos, etc.)

🧷 Resumen de campos que consolida

  • Emisor: RUC + Razón Social
  • Cliente: RUC + Razón Social
  • Documento: Fecha, Tipo, Serie-Número, Moneda
  • Montos: Subtotal, IGV, Total
{
  "RUC Emisor": "@{outputs('Redactar_Emisor_RUC')}",
  "Razon Social Emisor": "@{outputs('Redactar_Emisor_Razon_Social')}",
  "RUC Cliente": "@{outputs('Redactar_Cliente_RUC')}",
  "Razon Social Cliente": "@{outputs('Redactar_Cliente_Razon_Social')}",
  "Fecha": "@{outputs('Redactar_Fecha')}",
  "Tipo Comprobante": "@{outputs('Redactar_TipoComprobante')}",
  "Serie Numero": "@{outputs('Redactar_SerieNumero')}",
  "Moneda": "@{outputs('Redactar_Moneda')}",
  "SUB TOTAL": "@{outputs('Redactar_SUBTOTAL')}",
  "IGV": "@{outputs('Redactar_IGV')}",
  "TOTAL": "@{outputs('Redactar_TOTAL')}"
}

✅ Beneficio: el Excel se vuelve tu “registro maestro” de facturas procesadas.


🗂️ Archivado del XML por estructura de carpetas

Finalmente, el flujo guarda el archivo XML en una ruta organizada dinámicamente.

✅ Ruta de almacenamiento

Se construye así:

/CARPETA/{RUC_Emisor}/{Año}/{Mes}/{Día}/{SerieNumero}.xml

✅ Acción

  • OneDrive – Crear_archivo_XML
    • Nombre: {SerieNumero}.xml
    • Contenido: contentBytes del adjunto (sin alterar)
    • Ruta: usando formatDateTime(Fecha,'yyyy'), MM, dd

🎯 Resultado: orden perfecto por emisor y fecha, ideal para auditorías y búsquedas.


🧠 Conceptos clave destacados (para estudiantes)

  • Scopes: agrupan lógica por etapas (inicialización, preparación, procesamiento).
  • For each: procesa múltiples adjuntos de forma repetible.
  • Condiciones: filtran por tipo de archivo (solo XML).
  • Funciones: base64ToString(), xml(), xpath(), first(), formatDateTime()
  • Excel Table: insertar filas requiere una tabla definida (no rango suelto).

✅ Conclusiones

  • Este flujo implementa un patrón muy útil en finanzas: Ingesta → Normalización → Consolidación → Archivado.
  • La lógica de “crear Excel si no existe” lo hace robusto para ejecución continua.
  • La extracción con XPath permite capturar los datos más relevantes de un XML de factura sin intervención manual.

🚀 Con este flujo logramos que cada factura XML que llegue por correo se procese automáticamente: se extraen datos clave, se consolida en Excel y se archiva ordenadamente por RUC y fecha.
✅ Menos digitación, más control, trazabilidad y orden documental.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

advanced-floating-content-close-btnBoton