Control de Gastos en Power Apps: La Guía Completa del Módulo de Gastos
Mantener el control de los gastos puede convertirse en un caos si todo está regado en hojas de cálculo, correos o notas de celular. Pero con el control de gastos dentro de la Aplicación de Power Apps Control Económico de Proyectos, ese dolor de cabeza se convierte en una tarea sencilla, rápida y hasta divertida.
Este módulo fue diseñado para ayudarte a registrar, clasificar y visualizar cada gasto de tu proyecto en tiempo real. ¿Qué significa esto? Que puedes saber al instante cuánto estás invirtiendo, dónde se está yendo el dinero y cómo optimizar tu presupuesto sin perder el control.
Olvídate de los cálculos manuales o de perder facturas entre carpetas:
Con solo unos clics, puedes agregar gastos, asignarlos a proyectos específicos y consultar reportes claros que te muestran todo lo que necesitas saber para tomar decisiones inteligentes.
Y lo mejor, todo está integrado dentro de una interfaz moderna y fácil de usar.
Porque cuando el control de gastos es simple, tu trabajo se vuelve más eficiente.
1. Compras
Esta sección funciona igual que el Módulo anterior de Ingresos, con la diferencia de que aquí se incorporan controles específicos en la galería. Estos permiten manejar la información de las compras de forma más ágil, manteniendo el mismo flujo de trabajo intuitivo.
Donde empieza el control
Comenzamos añadiendo un label con el título “Gastos” en su propiedad Text. Así sabrás exactamente dónde estás: en la sección donde el dinero sale, pero el control se queda contigo.
Tu radar financiero
Insertamos un cuadro de texto con un ícono de búsqueda. Es como tener un radar para rastrear cada egreso: escribes proveedor, tipo de gasto o proyecto, y la app de control de gastos te muestra los resultados al instante. Eficiencia en un clic.
Vuelta al punto cero
¿Te equivocaste al buscar? No pasa nada. Con el botón de limpiar, todo vuelve al inicio. Es como reiniciar tu tablero de control de gastos para tener una vista fresca y sin errores.
Todo en orden
Aquí es donde la magia ocurre: la galería organiza los gastos como un catálogo limpio y moderno. Insertamos una galería vertical con la propiedad Items:
Sort( Search( Expenses; TextInput_Busqueda_Gastos.Text; Provider; Project; ExpenseType; Date; ExpenseValue; PurchaseOrderNumber; PaymentMethod ); 'Created On'; SortOrder.Descending )
Así queda una lista ordenada donde los gastos más recientes siempre aparecen primero. Todo fluye con claridad, sin confusiones y con total control de gastos.
Fuente de Datos
Detrás de todo buen módulo, hay una base sólida que lo impulsa. En este caso, todo comienza con Expenses, la tabla que guarda cada gasto registrado.
Aquí viven campos esenciales como: Provider, Project, Expense Type, Date, Expense Value, Purchase Order Number y Payment Method.
Es como tu libro contable digital, pero más ordenado, limpio y listo para responder en segundos.
Funciones de Búsqueda
El radar que rastrea cada peso:
Search(Expenses; TextInput_Busqueda_Gasto.Text; …)
Esta función permite buscar en varios campos al mismo tiempo (proveedor, tipo de gasto, proyecto, etc.).
Solo escribes un dato y, en menos de un segundo, tienes las coincidencias exactas.
El control de gastos no falla: encuentra todo lo que necesitas en un abrir y cerrar de ojos.
Función de Ordenamiento
Porque el orden sí importa:
Sort( … ; 'Created On'; SortOrder.Descending)
Te ayudará a ver los gastos más recientes en la parte superior de la lista.
Así, la información fluye de manera lógica, sin perder el control ni el tiempo.
Dentro de la Galería
Aquí es donde el control de gastos se vuelve realmente interactivo y útil.
Etiquetas de información
Cada gasto muestra sus datos con total claridad gracias a las etiquetas conectadas a la tabla.
Insertamos labels que reflejan las columnas más relevantes: Proveedor, Proyecto, Tipo de gasto, Fecha y Valor.
Cada etiqueta se conecta con su campo real mediante propiedades como:
ThisItem.Provider ThisItem.ExpenseType ThisItem.ExpenseValue
Así sabes exactamente a dónde se fue el dinero, sin adivinar ni perder tiempo.
Íconos con actitud
Eliminar: propiedad OnSelect que activa:
Set(varExpenseDeletionRecord; ThisItem);; UpdateContext({ popDelete: true })
Editar: propiedad OnSelect que activa:
Set(ExpenseItemRecord; ThisItem);; Navigate(EditExpense)
Con estos íconos, puedes acceder, actualizar o eliminar registros en segundos.
Nada de procesos largos: solo clics inteligentes.
Botón Crear
¿Un nuevo gasto? Solo toca el botón Crear con esta propiedad y listo:
Navigate(CreateExpense; ScreenTransition.None)
Es como abrir una nueva pestaña para tus finanzas: simple, directo y funcional.
Así, la galería se convierte en un tablero interactivo donde puedes visualizar, editar, eliminar o crear nuevos registros al instante.
Justo lo que hace al control de gastos más moderno y eficiente.

Img.1
Pantalla “Crear Compra”
Botón de regreso
Porque todo buen flujo necesita una salida rápida.
Con un solo clic, este botón te devuelve al módulo principal sin perder los datos ni romper el ritmo:
OnSelect = Back()
Botón Guardar
Tu aliado para cerrar el ciclo de una compra.
Este botón confirma que toda la información ingresada se guarde correctamente en la base de datos:
OnSelect = SubmitForm(Form_CreatePurchase_1)
Etiqueta de título
Claridad ante todo.
El título de la pantalla se define con un texto directo y visible para que el usuario siempre sepa dónde está:
Text = "Create Purchase"
El formulario mágico
El corazón del proceso.
Aquí se ejecuta toda la acción: la app registra la compra, muestra una notificación de éxito y limpia el formulario para el siguiente registro.
Notify("Purchase created successfully"; NotificationType.Success);; NewForm(Form_CreatePurchase_1);; Navigate(Purchases; ScreenTransition.Fade)
¿El resultado? Cada compra registrada con estilo, validación inmediata y notificación incluida. La app te confirma que tu registro fue exitoso mientras mantiene tu flujo de trabajo limpio y ágil.
Botón “+” para añadir compras
Porque siempre hay más compras por registrar, este botón “+” es la puerta para sumar nuevos movimientos al módulo. Con solo tocarlo, se crea un nuevo registro con valores base que luego podrás completar:
Collect(TemporaryPurchases; { Purchase_Date: Today(); Purchase_Value: 0; Supplier: ""; TotalPurchase: 0 } )
¿Qué hace esta fórmula?
Collect
La función estrella que guarda y acumula registros en una colección local. En este caso, la colección se llama TemporaryPurchases, y actúa como un borrador dinámico donde se guardan las compras antes de enviarlas oficialmente.
El registro inicial
Al presionar el botón, la app genera automáticamente un nuevo registro con estos valores predeterminados:
- Purchase_Date → se llena con la fecha actual gracias a Today().
- Purchase_Value → inicia en 0, esperando el valor real de la compra.
- Supplier → comienza vacío («»), listo para que se ingrese el nombre del proveedor.
- TotalPurchase → arranca en 0, y luego se actualiza con base en los datos ingresados.
Para orientar al usuario, también se inserta una etiqueta con el texto:
Text = "Add product"
Así, el módulo mantiene su dinamismo: registrar nuevas compras se vuelve tan fácil como dar un clic y dejar que la app se encargue del resto.

Img.2 Porque nada como un recordatorio claro de qué hace el botón.
Galería de compras
Aquí es donde cada compra cobra vida: se convierte en un registro visible, editable y fácil de entender.
Insertamos una galería vertical en blanco y en su propiedad Items colocamos:
TemporaryPurchases
Dentro de esta galería añadimos los controles que hacen la magia cotidiana:
- DatePicker →
DefaultDate = ThisItem.Purchase_DatePara que cada compra muestre su fecha correcta.
- InputText →
Default = ThisItem.Purchase_ValueAquí el usuario puede ingresar o modificar el valor real de la compra.
- Dropdown →
[""; "Approved"; "Pending"; "Rejected"]Ideal para indicar el estado de la compra según su proceso.
- Ícono de eliminar (papelera) →
OnSelect = Remove(TemporaryPurchases; ThisItem)Un clic y desaparece el registro. Así de simple.
Con este conjunto de controles, el control de gastos se vuelve tan dinámico como intuitivo. Cada gasto queda organizado, limpio y fácil de editar — como debe ser en un control de gastos.
Calculando totales como un máster
Porque ningún presupuesto se controla solo, la app saca cuentas al instante con un par de labels inteligentes:
- Label “Total Compras”
Text = "$" & Text(Sum(TemporaryPurchases; Value(Purchase_Value)); "#,##0.00")
Muestra el valor total de las compras registradas. Así, evitas sacar la calculadora (o sufrir con Excel).
- Label “Presupuesto Restante”
Text = "$" & Text(Value(DataCardValue24.Text) - Sum(TemporaryPurchases; Value(Purchase_Value)); "#,##0.00")
Indica cuánto queda del presupuesto asignado al proyecto. Perfecto para saber si todavía puedes comprar más… o si es hora de decir “no hay caja”.
Guardar y celebrar con estilo
Después de registrar cada compra, llega el momento de guardar los datos y dejar que la app haga su magia organizativa:
If( CountRows(TemporaryPurchases) = 0; Notify("You must add at least one purchase"; NotificationType.Error); With( { newPurchaseRecord: Patch( ProjectPurchases; Defaults(ProjectPurchases); { PurchaseDate: DatePicker1.SelectedDate; Supplier: SupplierDropdown.Selected; PurchaseValue: Value(InputText_PurchaseValue.Text); Status: StatusDropdown.Selected; ProjectRelation: ProjectDropdown.Selected } ) }; If( !IsBlank(newPurchaseRecord); Clear(TemporaryPurchases); Notify("Purchase saved successfully"; NotificationType.Success) ) ) );; ResetForm(Form_CreatePurchase);; Navigate(PurchasesScreen; ScreenTransition.Fade)
¿Qué hace esta fórmula?
Validación inicial
Primero, la app revisa que hayas agregado al menos una compra:
If(CountRows(TemporaryPurchases) = 0; Notify("You must add at least one purchase"; NotificationType.Error))
Si la colección está vacía, aparece un aviso amigable recordándote que debes registrar al menos una antes de continuar.
Registro de la compra
Con la función Patch, la app guarda la información en la tabla ProjectPurchases, dejando registro de proveedor, valor, fecha, estado y relación con el proyecto.
Un clic y ¡listo! compras seguras y centralizadas. Limpieza y confirmación
Una vez guardado todo, la app borra los datos temporales y muestra un mensaje de éxito.
Clear(TemporaryPurchases); Notify("Purchase saved successfully"; NotificationType.Success)
Así sabes que tu registro fue exitoso y el presupuesto sigue bajo control.
Acciones finales
La app reinicia el formulario y te devuelve a la pantalla principal con una transición en fade, elegante y moderna.
Porque nada dice “eficiencia” como cerrar una tarea con estilo.
2. Nómina Directa o Mano de Obra Directa

Img.3
Controles dentro de la galería
Cada trabajador del proyecto se muestra como un registro independiente dentro de la galería, donde insertamos los siguientes controles:
- Label (Ítem): muestra un número consecutivo que se incrementa automáticamente cada vez que se agrega un nuevo trabajador. Así nunca pierdes el orden.
- ComboBox: con la propiedad Items = WorkerApp, permite seleccionar al empleado o colaborador asignado.
- InputText (Días trabajados): campo editable donde se ingresan los días laborados durante el mes.
- InputText (Valor de nómina): aquí se define el valor total que corresponde a ese trabajador.
- Label (Valor calculado): muestra automáticamente el total basado en los días trabajados y el valor diario o acordado.
- Ícono de papelera: elimina al trabajador de la lista (OnSelect = Remove(Collection; ThisItem)).
En acción
Con estos controles, el control de gastos se vuelve tan ágil como práctico:
- Permite crear nóminas mensuales completas sin errores.
- Calcula automáticamente los totales por empleado.
- Y mantiene todo conectado con la base de datos principal del proyecto.
Es como tener una pequeña oficina contable dentro de la App, pero sin el papeleo.

Img.4
3. Mano de Obra Indirecta: Contratos
En esta sección se gestionan los contratos de proveedores o personal externo que hacen parte del proyecto. Cada contrato se visualiza en una tabla donde se listan los datos más relevantes: número de contrato, proveedor, proyecto, valor y estado.

Img.5
Controles de acción
En la columna Actions, se agregan dos íconos que hacen que el módulo sea tan funcional como intuitivo (ver Imagen 6):
- Ícono de ojo: permite visualizar los detalles del contrato seleccionado, sin necesidad de salir de la pantalla principal.
- Ícono “+” : abre la opción para añadir pagos o abonos relacionados con ese contrato.

Img.6
Propiedades dinámicas
El ícono “+” tiene la siguiente propiedad en OnSelect:
Set(SelectedContract; ThisItem);; Set(ShowPaymentPopup; true)
Lo que hace esta fórmula es:
- Guardar el contrato seleccionado en la variable SelectedContract, para que la app sepa exactamente a cuál registro agregar el pago.
- Mostrar una ventana emergente (popup) que permite registrar los datos del nuevo pago de forma rápida y directa.

Img.7
En pocas palabras
El submódulo de Contratos dentro de Gastos no solo organiza la información, sino que también la vuelve interactiva y accesible.
Puedes revisar los detalles de un contrato o añadir un pago con apenas un clic, manteniendo todo sincronizado y claro. Una herramienta tan sencilla que hasta firmar un contrato parecerá fácil.
4. Otros gastos
En esta pantalla se gestionan los gastos adicionales relacionados con transporte, alimentación, logística y otros. (Imagen 8).

Img.8
La estructura es similar a la pantalla de compras, pero incluye controles específicos en la galería para el registro de gastos:
- DatePicker: para seleccionar la fecha del gasto.
- DropDown: para elegir el tipo de gasto.
- InputText: para ingresar el concepto o descripción del gasto.
- ComboBox: para seleccionar el proveedor.
- InputText: para ingresar el número de documento.
- InputText: para la cantidad.
- InputText: para el valor unitario.
- Label: para mostrar el subtotal.
- Ícono de papelera: para eliminar el gasto registrado.

Img.9
Además, esta pantalla cuenta con una tabla resumen que muestra información relacionada con:
- Monto facturado
- Utilidad real
- Retención en la fuente
- ReteICA
- Otras retenciones
- Y otros costos
Toda esta información se filtra por proyecto, permitiendo llevar un control claro, organizado y preciso de los gastos.

Img.10
El módulo de Gastos completa el ciclo de gestión financiera dentro de la aplicación, permitiendo registrar y tener el control de gastos de cada proyecto con precisión y eficiencia. Desde la administración de nóminas directas e indirectas hasta los gastos adicionales, este bloque garantiza un seguimiento claro y centralizado de todos los movimientos económicos.
Te invitamos a seguir explorando nuestros demás artículos para seguir aprendiendo, visitando nuestra página web, donde encontrarás el paso a paso de los otros módulos, como Administración e Ingresos, cada uno diseñado para optimizar la operación de tu sistema y facilitar la toma de decisiones.
Si deseas implementar o conocer más sobre estas funcionalidades, haz clic en el botón al final del artículo y comunícate con nosotros. Nuestro equipo está listo para ayudarte a llevar la gestión de tus proyectos al siguiente nivel.

Deja una respuesta