Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Carlos-Gnd/FERRED-Inventario-y-Ventas/llms.txt

Use this file to discover all available pages before exploring further.

El rol Cajero está diseñado para operar el punto de venta: registrar ventas, emitir tickets y consultar niveles de stock en su sucursal asignada. Cada acción de un CAJERO se restringe automáticamente a su sucursalId — no puede leer ni escribir datos de otras sucursales.

Acceso al POS

Las ventas se registran con POST /api/ventas. El endpoint acepta el carrito, el nombre del cliente y el tipo de pago. El sucursalId del cuerpo debe coincidir con la sucursal del CAJERO, validado por assertSameSucursal.
POST /api/ventas
Authorization: Bearer <token>
Content-Type: application/json

{
  "sucursalId": 1,
  "items": [
    { "productoId": 10, "cantidad": 2, "precioUnit": 5.50 }
  ],
  "clienteNombre": "Consumidor Final",
  "tipoPago": "efectivo"
}
El servidor ejecuta de forma atómica:
  1. Verifica disponibilidad de stock dentro de la transacción
  2. Crea el registro facturaDte
  3. Descuenta stockSucursal por cada artículo
  4. Dispara el envío del DTE a Hacienda de forma asíncrona
Si algún producto no tiene stock suficiente se devuelve 409. La venta no se registra parcialmente.

Consulta de stock

GET /api/inventario/stock/:sucursalId
Devuelve la lista completa de stock de la sucursal, incluyendo detalles del producto y precios. El guard assertSameSucursal garantiza que el CAJERO solo consulte su propia sucursal.

Reimpresión de tickets

GET /api/ventas/:id/ticket
Devuelve los datos completos de una venta pasada: líneas de detalle, totales, IVA y referencia al DTE. La respuesta incluye sucursal, cajero y clienteNombre.
El guard assertSameSucursal se ejecuta antes de devolver el ticket. Un CAJERO no puede obtener tickets de facturas de otra sucursal — el servidor devuelve 403 de inmediato.

Estadísticas de ventas

GET /api/ventas/estadisticas/semanales?days=7
Devuelve totales diarios de ventas y número de transacciones para los últimos N días (1–14). Para un CAJERO, los resultados se filtran automáticamente a su sucursal. El parámetro days tiene valor por defecto de 7.

Lo que NO puede hacer

Las siguientes acciones están bloqueadas para el rol CAJERO a nivel de middleware:
  • Gestionar o ver otros usuarios (/api/usuarios — solo ADMIN)
  • Configurar precios de productos (solo ADMIN)
  • Ajustar cantidades de inventario (PATCH /api/inventario/:productoId/ajuste — ADMIN y BODEGA)
  • Recibir mercancía de proveedores (ADMIN y BODEGA)
  • Transferir stock entre sucursales (solo ADMIN)
  • Ver stock o datos de ventas de otras sucursales

Credenciales de prueba

CampoValor
Correocajero@ferred.com
Contraseñacajero123
URLhttps://ferred.netlify.app

Build docs developers (and LLMs) love