Skip to content

Matriz: tipos de documento e inventario ​

Referencia para alinear getInventoryOperation (documentInventoryService.js), el kardex (getProductMovements en inventoryMovementController.js) y INVENTORY_TYPES en updateDocument (documentController.js).

Operación de inventario por tipo (getInventoryOperation) ​

TipoOperación add / reduce / noneNotas
103addCompra. Las líneas con sourceDocumentId de una recepción (116) se saltan: el stock ya entró con la recepción
104addImportación (costo importCostEnd preferido)
116addRecepción de mercadería. Nace confirmada, no se edita ni se desconfirma; se corrige anulando
01, 112reduceVenta / entrega
06addNota de crédito (reingreso)
07, 105reduceNota de débito / devolución según caso
106addAjuste (cantidad con signo en línea)
100, 101, 102, 11, 113, 114, 115, 05, 107, 108noneSin movimiento de inventario en este servicio

Tipos no listados en el switch lanzan error (“Tipo de documento no soportado”).

Momento de aplicación al crear documento ​

  • Tras crear líneas, si no hay análisis IA, se llama processInventoryUpdate (mismo archivo servicio).
  • Con IA, el inventario puede aplicarse al confirmar según confirmDocument (no duplicar con el alta).

Edición de documento (updateDocument) ​

  • La constante INVENTORY_TYPES = ['103','105','106','07'] solo incluye tipos que este endpoint permite editar y para los que tiene sentido revertir/reaplicar stock en la misma transacción.
  • No incluye 01, 104, 112, etc.: esos flujos fiscales/ventas no pasan por la misma edición de líneas; cambiar ahí sin actualizar esta lista produciría desfase stock–documento.
  • 116 es inmutable: updateDocument la rechaza con GOODS_RECEIPT_IMMUTABLE, así que nunca entra en esta reversión.

Recepción de mercadería (116) → factura de compra (103) ​

  • La recepción suma stock al guardarse y contabiliza inventario contra la cuenta puente "Mercadería recibida por facturar".
  • La factura toma las líneas pendientes (sourceDocumentId / sourceLineId de la recepción). Esas líneas no mueven stock otra vez y descargan la cuenta puente en lugar de la cuenta de compras; la diferencia entre el costo recibido y el facturado va a "Diferencia de precio en compras".
  • Anular la recepción revierte el stock y el asiento; se bloquea si alguna línea ya fue facturada.
  • El kardex y el reporte de análisis de movimientos excluyen las líneas de 103 que provienen de una 116.

Movimientos manuales ​

  • Tipos: ingreso, salida, transferencia, revalorización (ver inventoryMovementController.js).
  • Bundles en catálogo: rechazados en movimiento manual; en documentos se expanden a componentes.

Conciliación y kardex ​

  • La reconciliación de stock (getStockReconciliation) y el kardex unificado deben usar la misma noción de “documento que aplica stock” que el literal SQL en getProductMovements (confirmación, wasUnconfirmed, IA en 103).

Última actualización: alineada con la implementación del backend en el repositorio (revisar el código ante cambios de tipos o reglas de confirmación).

Documentación API abaco · Changelog