Fenicia calcula el costo de tu inventario con capas de costo (lotes) bajo la metodología FIFO (primero en entrar, primero en salir). Cada vez que entra stock — por una recepción de compra, una transferencia recibida o una devolución — se crea internamente un lote con su costo unitario y su cantidad. Cuando el stock se consume (por ejemplo, la venta de una orden), Fenicia agota primero los lotes más antiguos.
Superficie de solo lectura
No existe un endpoint público para crear o cancelar un lote manualmente. Los lotes se generan internamente a partir de recepciones de orden de compra, transferencias y devoluciones — no desde esta API. Todos los endpoints de esta página requieren el permiso inventory:read.
La mayoría de los listados de /inventory/* (stock, transferencias, ajustes, conteos) pagina 1-indexado (page=1 por defecto). GET /inventory/lots es la excepción dentro del propio dominio de inventario: pagina 0-indexado (page=0 por defecto), igual que /locations/*. Además, su forma de respuesta es plana — { data, total, page, limit, totalPages, hasMore } — distinta del { items, pagination: {...} } que usan stock, transferencias, ajustes y conteos. Si compartes un helper de paginación entre recursos de inventario, esto rompe silenciosamente el conteo de páginas.
Esta agregación solo considera lotes con status: 'active'. Es la fuente de valuación correcta del dominio — a diferencia del reporte GET /inventory/reports?reportType=valuation, que hoy está roto (ver Reportes de Inventario).
Este COGS se calcula a partir de los InventoryLotMovement con referenceType: 'order' y type: 'sale' asociados a la orden — no de una tabla de resumen separada.
El consumo de lotes sigue estrictamente el orden receivedAt ascendente (el lote más antiguo se agota primero) dentro de {tenantId, sku, locationId}, y solo considera lotes con status: 'active'. Si la cantidad solicitada excede la suma de currentQuantity de los lotes activos disponibles, el consumo se rechaza — este es el guardia real contra sobreventa del subsistema de costeo, independiente del guardia de stock negativo del campo stock base (ver Catálogo de Errores).
No expuesto como endpoint
El consumo FIFO se dispara internamente (venta de una orden, recepción de una transferencia) — no hay un POST público para invocarlo directamente. No lo documentes como una operación que puedas ejecutar tú mismo vía API.