Lógica y Eventos
FlowFilters
Dificultad: 7/10Un 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
}