# Descripción General

El proceso **Generador Jerárquico de Líneas (DFS)** (`DFSGenerateLines`) automatiza la creación de la estructura de líneas de reporte (`PA_ReportLine`) y sus correspondientes orígenes (`PA_ReportSource`) en iDempiere/Lirion. Para lograr esto, realiza un recorrido en profundidad (Depth-First Search - DFS) sobre el árbol del catálogo de cuentas, partiendo de un nodo raíz seleccionado.

> **Propósito del Generador DFS:** Evitar la configuración manual de docenas o cientos de líneas contables al estructurar reportes financieros. Al leer jerarquías existentes del catálogo de cuentas, recrea la estructura exacta de manera jerárquica con sus sumatorias automáticas.

## Flujo de Ejecución Técnico

Cuando el proceso se ejecuta, realiza los siguientes pasos en la base de datos y el servidor de aplicaciones:

1. **Secuenciación Inicial:** Identifica el último número de secuencia (`SeqNo`) registrado en el conjunto de líneas activo (`PA_ReportLineSet_ID`) para continuar la numeración incremental desde allí (con saltos de 10 en 10).
2. **Carga del Árbol de Cuentas:** Carga la definición del elemento contable (`C_Element_ID`) y recupera la estructura del árbol jerárquico asociado.
3. **Búsqueda del Nodo Raíz:** Localiza el nodo inicial (`C_ElementValue_ID`) con parent\_id = 0 en el árbol configurado para iniciar el recorrido desde esa posición específica del catálogo.
4. **Recorrido Recursivo DFS:** Recorre recursivamente cada nodo del subárbol: 
    - **Filtro de Resumen (IsSummary):** Valida si el nodo actual debe ser procesado de acuerdo al parámetro configurado.
    - **Creación de Línea:** Si corresponde procesarlo, crea un registro en la tabla `PA_ReportLine` con el nombre y descripción del elemento.
    - **Asignación de Origen (Leaf Nodes):** Si el nodo es una hoja (no tiene hijos), crea un registro en `PA_ReportSource` vinculándolo directamente al elemento contable (cuenta de detalle).
    - **Generación de Totales:** Si el nodo es un nodo de resumen (tiene hijos), tras procesar recursivamente a todos sus descendientes, genera automáticamente una línea de totalización con la descripción "Total \[Código Cuenta\]" y vincula su origen.

## Tablas de iDempiere Utilizadas

El proceso interactúa y modifica las siguientes tablas del diccionario de datos de iDempiere:

- `AD_TreeNode`: Define la relación jerárquica (Padre/Hijo) entre los elementos del árbol contable.
- `C_ElementValue`: Almacena las cuentas contables individuales, su código, nombre y tipo (detalle o resumen).
- `PA_ReportLineSet`: Cabecera del conjunto de líneas activo sobre el cual se ejecuta el proceso (el ID del registro actual de la ventana).
- `PA_ReportLine`: Registros de líneas de reporte que se insertan de forma secuencial durante el recorrido DFS.
- `PA_ReportSource`: Orígenes de datos que asocian cada línea de reporte con su cuenta correspondiente del catálogo.

<p class="callout warning">**Importante:** Este proceso realiza inserciones directas sobre la estructura activa de `PA_ReportLineSet`. Se recomienda realizar una copia de seguridad o ejecutar en un conjunto de prueba, ya que no elimina líneas existentes antes de la inserción y podría duplicar secuencias si se ejecuta múltiples veces en el mismo registro.</p>