Pagos

Pagos (/admin/payments) no es una pantalla de alta. Cada fila es una factura existente. Registrás lo pagado del período, podés marcar la factura como pagada y guardar notas. Permisos: FunctionId PAYMENT (33). View abre el listado y el wizard de solo lectura. Edit muestra Guardar, Marcar pagado, notas de ítem, reembolso de retención y adjuntos. Abierto/Cerrado de la factura es el toggle de Estado del listado, no un banner dentro del wizard. Add hace falta para crear notas de cabecera. Delete quita notas y adjuntos.

Diseño de la pantalla

Listado de pagos

Figura: listado FoodHub — título Pagos, subtítulo Gestionar pagos, ? de ayuda; tarjeta con Buscar pagos…, Filtro, Cerrado, Abierto, Export; columnas Número, Empresa, N.º de job, Proyecto, Desde, Hasta, Monto, Monto pagado, Notas, Creado, Estado, Acciones.

RegiónQué ves
Barra de páginaTítulo Pagos, subtítulo Gestionar pagos y el ? (este artículo). No hay New.
Tarjeta de datosBúsqueda, Filtro, Cerrado / Abierto, Export de la página actual, columnas ordenables, montos en formato US, estado Cerrado/Abierto, paginación (30 por defecto).
Puerta vacíaIcono de filtro y Aplicá un filtro para ver los pagos hasta que uses Cerrado, Abierto, Aplicar del filtro o Buscar.
Wizard de pagoSuperficie B en la URL del listado (?invoice_id= / ?view=) — pills Pagos, Notas, Adjuntos.

Orden por defecto: Desde descendente. El filtro de fechas usa el período de la factura (start ≥ Desde y end ≤ Hasta), no Created At.

Columnas

ColumnaSignificado
NúmeroNúmero de factura.
EmpresaEmpresa del proyecto.
N.º de jobNúmero de proyecto. Enlace al wizard de Projects si hay permiso View.
ProyectoDescripción/nombre. Mismo enlace.
Desde / HastaPeríodo de la factura (m/d/Y).
MontoFinal Amount This Period. Formato US $1,234.00.
Monto pagadoSuma de Paid Amt de las líneas.
NotasNotas recortadas.
CreadoFecha de alta (m/d/Y).
EstadoCerrado si está pagada, Abierto si no. Pegado a Acciones.
AccionesFacturas abiertas con Edit: ⋮ (Editar, Marcar pagado). Facturas pagadas (o solo View): icono circular Ver — una sola acción nunca va en ⋮.

Filtros

Cerrado y Abierto son toggles (paid = 1 o paid = 0). Un clic los prende (verde / rojo relleno); otro clic en el mismo botón los apaga. Solo uno puede estar activo. Si apagás ambos y no hay otro filtro (Búsqueda / Filtro), vuelve la puerta vacía. El popover Filter tiene Empresa, Proyecto (después de Empresa), Estado y rango de fechas.

Invoices ⋮ Pagos abre este listado con ?invoice_id= y el wizard de esa factura.

Wizard

Las facturas pagadas abren las cantidades en solo lectura (igual que Symfony). El Abierto/Cerrado se cambia en la columna Estado del listado; el título del wizard ya muestra job, número y período.

PillQué hacés
PagosPaid Qty por línea. El Bond se calcula (Σ Paid Amt bonded / Σ Contract Amt bonded) y no se tipea. Marcar pagado paga todas las líneas y cierra la factura — no se deshace desde la app. El reembolso de retención es el $ del KPI de retención. Pay Amount (USD) registra un pago en dólares sin cambiar cantidades de ítems (retención/bond descontados, cierre opcional). Pago en USD al proyecto reparte el crédito a las facturas abiertas más antiguas.
NotasNotas de cabecera (invoice_notes). Búsqueda, Filtro (Desde / Hasta), checkboxes para borrar varias, y Nueva abre Nueva nota (fecha de hoy, texto enriquecido). Editar y Eliminar van en el menú de fila.
AdjuntosLos mismos archivos del wizard de facturas (uploads/invoice/).

Paid Qty y Unpaid Qty usan 2 decimales (US 1,234.00). La Invoiced Qty de Bond y Bond Qty usan 5 decimales. Los ítems cerrados muestran el valor formateado; los abiertos, el input.

El icono de nota en Unpaid Qty abre Notas de ítems: Cant. impaga forzada (opcional), texto enriquecido, Agregar nota y una tabla Notas / Fecha / Cant. impaga forzada / Acciones (editar y eliminar). El icono se pone rojo si el ítem ya tiene notas. Un override actualiza Unpaid Qty sin tocar Paid Qty. El plus aparece cuando hay historial de cantidad impaga.

Los plus en el nombre, Contract Qty y Price abren el historial de Change Order / cantidad / precio, igual que en Invoices.

La cantidad impaga de la grilla es Cant. factura − Cant. pagada, salvo que una nota posterior la overridee. El Bond usa bon_quantity de la factura.