erp-core/docs/05-user-stories/mgn-005/US-MGN-005-006-001-valoracion-fifo.md

3.7 KiB
Raw Blame History

US-MGN-005-006-001: Valoración de Inventario FIFO

RF Asociado: RF-MGN-005-006 Módulo: MGN-005 - Inventario Básico Epic: Valoración de Inventario Prioridad: P0 Story Points: 8 Sprint: Sprint 11 Estado: Ready for Development Fecha: 2025-11-24


User Story

Como usuario financiero, Quiero que el sistema calcule la valoración de inventario usando método FIFO (First In, First Out), Para cumplir con normas contables y conocer el valor del stock.


Descripción Detallada

El método FIFO valora el inventario asumiendo que las primeras unidades que entraron son las primeras en salir.

El sistema mantiene capas de valoración (stock_valuation_layers) con:

  • Fecha de entrada
  • Cantidad
  • Costo unitario
  • Valor total

Al consumir stock, se descuentan las capas más antiguas primero. El valor del stock final es la suma de las capas restantes.


Criterios de Aceptación

Escenario 1: Crear capa de valoración en entrada (Camino Feliz)

Dado que recibo 10 unidades de Producto A a $100 c/u, Cuando valido el movimiento de entrada, Entonces el sistema crea capa: qty=10, unit_cost=100, value=1000, date=hoy.

Escenario 2: Consumir stock FIFO

Dado que tengo capas: [Capa1: qty=10, cost=100, date=2024-01-01], [Capa2: qty=5, cost=110, date=2024-01-05], Cuando consumo 12 unidades, Entonces el sistema consume: 10 de Capa1 (costo=1000), 2 de Capa2 (costo=220), costo total=1220.

Escenario 3: Calcular valor de inventario

Dado que tras consumir quedan: [Capa2: qty=3, cost=110], Cuando consulto valoración, Entonces el sistema retorna valor_inventario=330 (3×110).


Reglas de Negocio

  • RN-1: FIFO consume capas más antiguas primero.
  • RN-2: Cada movimiento de entrada crea una nueva capa.
  • RN-3: Cada movimiento de salida consume capas existentes.
  • RN-4: Capas vacías (qty=0) se marcan como consumed.

Tareas Técnicas

Backend

  • Service: ValuationService.createLayer(stockMove)
  • Service: ValuationService.consumeLayers(stockMove)
  • Service: ValuationService.calculateFIFOCost(product, quantity)
  • Service: ValuationService.getInventoryValue(productId)
  • Algoritmo FIFO consumption
  • Unit tests (>80%)
  • Integration tests
  • Swagger docs

Frontend

  • Componente: ValuationReport.tsx
  • Tabla de capas de valoración
  • Gráfico evolución de valor
  • API client: valuationApi
  • Component tests
  • E2E test

Database

  • Tabla: inventory.stock_valuation_layers
  • Índices: idx_valuation_layers_product_date
  • RLS policy: company_isolation

Estimación Detallada

Tarea Horas
Backend 5
Frontend 3
Testing 3
Code Review 1
TOTAL 12 horas = 8 SP

Definition of Done

  • Código implementado según ET
  • Tests pasando (>80%)
  • Code review aprobado
  • Algoritmo FIFO correctamente implementado
  • QA validado
  • PO aprobado

Referencias