Lógica y Eventos

FlowFilters

Dificultad: 7/10

Un FlowFilter (Filtro de Flujo) es el "mejor amigo pero independiente" de un FlowField. El FlowFilter es un campo especial de tu tabla, pero es como un campo "fantasma": no guarda datos de verdad para almacenarlos permanentemente.

¿Qué son?

Son campos de la tabla que sirven únicamente para recibir parámetros y filtros dinámicos desde la pantalla del usuario con el propósito de dárselos a un FlowField para que la fórmula cambie según la situación y "fluya" a través de él.

¿Cómo modifican el resultado de un FlowField?

Imagina que tienes un FlowField que es "Deuda Total". Cuando entras a ver al Cliente, te dice "Nos debe 5.000€". Bien, usando la directiva Sum(...) en AL.

Pero ¿qué pasa si el contable quiere saber: "Cuánto nos empezó a deber este mes específico (Enero)"?

Para esto, el programador diseña un FlowFilter de tipo fecha llamado "Filtro Fecha". En el código AL del FlowField "Deuda Total", le dice a la fórmula: Sum(Facturas donde "Fecha Emisión" = mi FlowFilter).

Así, el usuario, al ver la ficha del cliente en pantalla, le pone un filtro de fecha a la página (Enero 1..Enero 31). El FlowFilter "atrapa" ese mes, se lo pasa al FlowField, y en décimas de segundo la "Suma" que valía 5.000€ baja mágicamente a 800€, calculando únicamente los registros pertenecientes a enero.

// 1. El campo invisible que atrapa la fecha
field(55; "Date Filter"; Date)
{
    FieldClass = FlowFilter;
}

// 2. El FlowField mágico modificado en vivo
field(50; "Deuda Total"; Decimal)
{
    FieldClass = FlowField;
    CalcFormula = Sum("Líneas de Compra".Cantidad 
                      where("Código Cliente" = field("No."),
                            "Posting Date" = field("Date Filter"))); // AQUÍ ENTRA EN ACCIÓN
}
← Volver a Teoría