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 módulo de proveedores y recepciones de mercancía permite registrar los ingresos de stock que llegan de los distribuidores. Al crear una recepción, el sistema incrementa automáticamente el inventario de la sucursal receptora en una transacción atómica, garantizando que el stock siempre refleje la mercancía física disponible. Los roles ADMIN y BODEGA tienen acceso a este módulo.

Gestión de proveedores

Los proveedores se almacenan en el modelo Proveedor:
model Proveedor {
  id        Int      @id @default(autoincrement())
  nombre    String
  nit       String?  @unique
  telefono  String?
  email     String?
  direccion String?
  activo    Boolean  @default(true)
  creadoEn  DateTime @default(now()) @map("creado_en")
  // ...
  @@map("proveedores")
}
CampoTipoDescripción
nombrestringNombre comercial del proveedor (mínimo 2 caracteres)
nitstring (opcional)NIT tributario; debe ser único si se provee
telefonostring (opcional)Teléfono de contacto
emailstring (opcional)Correo electrónico; se valida el formato
direccionstring (opcional)Dirección física
activobooleantrue por defecto; se usa soft-delete
Endpoints disponibles:
MétodoRutaRolesDescripción
GET/api/proveedoresTodosLista proveedores activos ordenados por nombre
POST/api/proveedoresADMIN, BODEGACrea un nuevo proveedor
PUT/api/proveedores/:idADMIN, BODEGAActualiza datos del proveedor
DELETE/api/proveedores/:idADMINDesactiva el proveedor (soft delete)
El borrado es lógico: activo pasa a false para preservar el historial de recepciones asociadas al proveedor.

Recepción de mercancía

Una recepción registra el ingreso de uno o más productos al inventario de una sucursal. El endpoint es:
POST /api/proveedores/recepcion
Roles permitidos: ADMIN, BODEGA. Un usuario con rol BODEGA solo puede crear recepciones para su propia sucursal asignada. Cuerpo de la solicitud:
{
  "proveedorId": 3,
  "sucursalId": 1,
  "numeroFactura": "FAC-2026-00891",
  "observaciones": "Pedido semanal de tornillería",
  "items": [
    { "productoId": 12, "cantidad": 200, "costoUnit": 0.08 },
    { "productoId": 17, "cantidad": 50,  "costoUnit": 1.25 }
  ]
}
Al procesarse, el servidor:
  1. Valida que el proveedor exista y esté activo.
  2. Valida que todos los productos existan y estén activos.
  3. Crea el registro RecepcionMercancia y los DetalleRecepcion en una transacción.
  4. Incrementa el StockSucursal de cada producto en la sucursal indicada (upsert: crea el registro si no existía).
  5. Sincroniza stockActual en el modelo Producto sumando todas las sucursales.
  6. Invalida el OfflineCache de la sucursal.

Campos de recepción

ModeloCampoTipoDescripción
RecepcionMercanciaproveedorIdIntProveedor del que proviene la mercancía
RecepcionMercanciasucursalIdIntSucursal que recibe
RecepcionMercanciausuarioIdInt?Usuario que registra la recepción
RecepcionMercancianumeroFacturaString?Número de factura del proveedor para trazabilidad
RecepcionMercanciaobservacionesString?Notas libres sobre el pedido
RecepcionMercanciatotalFloatSuma de cantidad × costoUnit de todos los ítems
DetalleRecepcionproductoIdIntProducto recibido
DetalleRecepcioncantidadFloatUnidades recibidas
DetalleRecepcioncostoUnitFloatCosto unitario de compra
DetalleRecepcionsubtotalFloatcantidad × costoUnit

Acceso por rol

AcciónADMINBODEGACAJERO
Ver proveedores
Crear / editar proveedor
Desactivar proveedor
Registrar recepción (cualquier sucursal)
Registrar recepción (su sucursal)
Ver historial de recepciones✓ (todas)✓ (su sucursal)

Flujo de recepción de mercancía

1

Seleccionar proveedor

Elige el proveedor de la lista (GET /api/proveedores). Si el proveedor no está registrado, créalo primero con POST /api/proveedores.
2

Ingresar número de factura

Escribe el número de factura del proveedor en el campo numeroFactura. Este dato es opcional pero facilita la conciliación contable.
3

Agregar productos y cantidades

Para cada producto recibido, indica productoId, cantidad y costoUnit. El sistema valida que los productos existan y estén activos antes de continuar.
4

Confirmar recepción

Envía POST /api/proveedores/recepcion. El servidor ejecuta toda la operación en una sola transacción atómica: crea la recepción, sus detalles e incrementa el stock de cada producto en la sucursal.
5

Verificar stock actualizado

El stock en StockSucursal ya refleja el ingreso. Puedes confirmarlo en GET /api/inventario/stock/:sucursalId o en la vista de stock comparativo.

Build docs developers (and LLMs) love