Gestión del estacionamiento
Una estadía empieza cuando el vehículo entra y termina cuando sale. En el medio están la ocupación, la caja del turno y el comprobante. Esta página junta ese circuito para quien opera o integra. No lista playas, importes ni medios de pago que el producto no nombre.
Yrix Acceso (barrera y listas) es otro producto. Si no está contratado, la playa igual registra ingresos y cobros. La barrera no es un requisito de la caja.
Ingreso y egreso
El ingreso llega solo o a mano:
- Lectura. La detección de entrada (ver Lectura de patentes) abre la estadía en la ocupación.
- Manual. Quien tiene
ParkingOccupancy.CreateManualEntrycarga un ingreso desde la ocupación (botón + en la app).
La salida se empareja con la estadía abierta. En el diálogo de emparejar, una letra roja en la patente de salida marca un desacuerdo de alta confianza con la entrada, posición por posición.
Sobre una estadía activa, y solo si el rol tiene el permiso, el operador puede:
| Acción | Permiso |
|---|---|
| Registrar el cobro | ParkingPayment.Create, con la caja abierta |
| Cerrar porque ya pagó | ParkingOccupancy.CloseManual |
| Cerrar sin cobro | ParkingOccupancy.CloseWithoutPayment |
| Anular la entrada | ParkingOccupancy.VoidEntry, dentro de la ventana vigente |
Cada acción irreversible pide confirmación. Si el permiso no está, la acción no aparece.
Un abonado activo con factura de cuenta corriente vencida, en una playa sin Yrix Acceso y con un plan que tiene vencimiento, puede entrar igual por la lectura. El sistema deja una incidencia para que el operador hable con el cliente. No transforma esa entrada en estadía rotativa ni suspende el abono por ese ingreso. Con barrera contratada, la palanca de acceso es la barrera. Clientes, planes y cuenta corriente están en el módulo Abonados.
Ocupación
La grilla (panel y app) muestra las estadías activas: foto de entrada, patente, desde cuándo está, tiempo en patio y si pagó.
El evento SignalR OccupancyChanged avisa que el patio cambió. El cliente vuelve a pedir la lista (en la app, con un debounce de unos 2 segundos). No se rearma la ocupación con cada heartbeat de cámara. Si no hay canal en vivo, la pantalla reconcilia sola cada 45 segundos. Un fallo de ese refresco no borra la lista que ya se veía.
Filtros documentados en la app: sin pagar, pagados, a revisar (categoría de vehículo a confirmar) y sin placa. La búsqueda es por patente.
La categoría de cobro (auto, camioneta, bus, moto) sale de los tipos visuales tildados en Transitorios → Tarifas y pases → Categorías de vehículo, no del texto de la patente. Si el clasificador queda fuera del margen, se usa la tarifa del tipo más cercano y la estadía queda para revisión. El cajero puede corregirla antes o durante el cobro. El default Auto solo entra cuando no hay un ranking usable.
Cajas
El cobro exige un turno de caja abierto.
- En Caja (Cabina o Atención), si el turno está cerrado, el operador indica el monto inicial. Puede ser 0.
- Con la caja abierta se habilitan el cobro por QR, el cobro manual y las acciones de ocupación que registran un pago.
- Con la caja cerrada, la pantalla de cobro avisa y no confirma. Confirmar cobro y Cobrar y cerrar quedan bloqueados.
La planilla del turno muestra saldo, ventas, gastos, monto inicial, hora de apertura, tiempo del turno y el desglose por método de pago. Los movimientos se filtran por tipo (estadías, contado, gastos, depósitos). Según el permiso, el operador registra un gasto, un depósito al banco o la venta de un pase.
Los incidentes del turno (evasión o tolerancia) se listan aparte. No suman al efectivo: son auditoría. Llegan en vivo con NewParkingIncident.
Al cerrar, la app usa el monto del sistema como declarado, en paridad con el cierre simplificado del panel. Si hay más de una caja de tesorería abierta, hay que elegir el destino. Después del cierre la sesión de la app termina.
La notificación NoCashBoxActive la filtra la API: la reciben los supervisores, por REST y por SignalR. El cliente no vuelve a filtrar por rol.
Cobro
En Cabina el cobro tiene dos entradas, las dos con ParkingPayment.Create y caja abierta:
| Modo | Qué resuelve |
|---|---|
| QR | El código del ticket de entrada. La app muestra patente, tiempo e importe y pide confirmación. |
| Manual | Búsqueda por patente o por id de la detección de entrada. Si hay más de un vehículo con esa patente, se elige cuál. |
El operador elige el método y confirma Cobrar. En la documentación de producto los métodos nombrados son efectivo y Mercado Pago. La planilla parte los ingresos por el método que haya quedado en el movimiento. Al confirmar, la pantalla muestra el número de comprobante y el importe. Esta versión de la app no imprime en papel: si el cobro falla, no queda a medias en la interfaz.
Puntos de venta y comprobantes
El comprobante sale de un punto de venta (SalesPoint). El operador no tipea el número.
Dato de SalesPoint | Rol |
|---|---|
PosCode | Código del punto de venta. No se repite. |
Name | Nombre del punto de venta. |
IsActive | Si el punto de venta se puede usar. |
ExitToleranceMinutes | Tolerancia de egreso de ese punto, en minutos. |
EmissionKind | Modo de emisión. Un punto de venta no mezcla modos. |
El modo del punto de venta lo da EmissionKind. El número sale de la serie (SalesPointSeries): cada serie es de un SalesPointId y un DocumentTypeId, y ahí están NextNumber y los defaults, entre ellos IsDefaultAuto. Cuando la emisión es electrónica, la autoridad fiscal valida con CAE cuando corresponde. La categoría fiscal del cliente es obligatoria para facturar.
Un comprobante ya autorizado no se borra para corregirlo: se emite una nota de crédito. Un borrador se anula por dentro. El libro de ventas y el IVA, las compras y el cierre de mes están en el módulo Finanzas.
La moneda por defecto del tenant es ARS y se puede cambiar por tenant. Esta página no fija alícuotas ni tipos de letra.
Roles
El permiso no se asigna a la persona. Se asigna al rol, y la persona hereda los roles que tiene. El código es Recurso.Acción (por ejemplo CashBox como recurso de caja, o ParkingPayment.Create). Viaja en el JWT. Si falta, la API responde 403.
| Quién | Qué ve |
|---|---|
| Cabina | Cobro, ocupación, caja y detecciones. |
| Atención | Ocupación, caja, abonados y facturación. Parte de abonados en la app sigue como placeholder. |
| Administrator del tenant | Si además tiene un modo operador, entra al panel del día (ocupación, ingresos, cajas abiertas, deuda) y de ahí salta a Cabina o Atención. |
| SuperAdmin | Cuentas globales: tenants y herramientas de fábrica. No es el rol de la cabina. |
Los roles se editan en Configuración, dentro de usuarios y seguridad. El menú de la playa agrupa Transitorios, Abonados, Finanzas y, solo si está contratado, Yrix Acceso.
El mapa de procesos que sostiene este circuito está en Arquitectura e integración.