Package com.deusto.coffeestack.service
Class AjusteServiceImpl
java.lang.Object
com.deusto.coffeestack.service.AjusteServiceImpl
- All Implemented Interfaces:
AjusteService
-
Constructor Summary
ConstructorsConstructorDescriptionAjusteServiceImpl(LoteRepository loteRepository, InsumoRepository insumoRepository, MovimientoInventarioRepository movimientoRepository) -
Method Summary
Modifier and TypeMethodDescriptionReturns all registered movements, most recent first.listarMovimientosFiltrados(Long insumoId, TipoMovimiento tipo, LocalDateTime desde, LocalDateTime hasta) Returns movements filtered by optional criteria, most recent first.listarMovimientosPorInsumo(Long insumoId) Returns all movements for batches of a given insumo, most recent first.registrarAjuste(AjusteRequest request, String usuarioLogin) Registers the movement and updates the lote's current quantity.reportePorMotivo(TipoMovimiento tipo, LocalDateTime desde, LocalDateTime hasta) Genera el reporte de movimientos agrupado por motivo y tipo, con el número de incidencias y la cantidad total acumulada por cada combinación.
-
Constructor Details
-
AjusteServiceImpl
public AjusteServiceImpl(LoteRepository loteRepository, InsumoRepository insumoRepository, MovimientoInventarioRepository movimientoRepository)
-
-
Method Details
-
registrarAjuste
@Transactional public MovimientoResponse registrarAjuste(AjusteRequest request, String usuarioLogin) Registers the movement and updates the lote's current quantity.Business rules:
- The lote must exist.
- For MERMA / ROTURA / AJUSTE_NEGATIVO: quantity must not exceed the lote's current available stock.
- The lote's
cantidadActualis decreased or increased accordingly. - A
MovimientoInventarioaudit record is persisted.
- Specified by:
registrarAjustein interfaceAjusteService- Parameters:
request- the adjustment detailsusuarioLogin- login of the authenticated user performing the action- Returns:
- the persisted movement as a response DTO
-
listarMovimientos
Description copied from interface:AjusteServiceReturns all registered movements, most recent first.- Specified by:
listarMovimientosin interfaceAjusteService
-
listarMovimientosPorInsumo
@Transactional(readOnly=true) public List<MovimientoResponse> listarMovimientosPorInsumo(Long insumoId) Description copied from interface:AjusteServiceReturns all movements for batches of a given insumo, most recent first.- Specified by:
listarMovimientosPorInsumoin interfaceAjusteService
-
listarMovimientosFiltrados
@Transactional(readOnly=true) public List<MovimientoResponse> listarMovimientosFiltrados(Long insumoId, TipoMovimiento tipo, LocalDateTime desde, LocalDateTime hasta) Description copied from interface:AjusteServiceReturns movements filtered by optional criteria, most recent first.- Specified by:
listarMovimientosFiltradosin interfaceAjusteService- Parameters:
insumoId- restrict to a specific insumo (nullable)tipo- restrict to a specific movement type (nullable)desde- lower bound on fechaHora, inclusive (nullable)hasta- upper bound on fechaHora, inclusive (nullable)
-
reportePorMotivo
@Transactional(readOnly=true) public List<ReporteMotivoResponse> reportePorMotivo(TipoMovimiento tipo, LocalDateTime desde, LocalDateTime hasta) Description copied from interface:AjusteServiceGenera el reporte de movimientos agrupado por motivo y tipo, con el número de incidencias y la cantidad total acumulada por cada combinación. Pensado para que el propietario detecte patrones de desperdicio y enfoque mejoras de proceso (issue #24).- Specified by:
reportePorMotivoin interfaceAjusteService- Parameters:
tipo- restringe a un tipo concreto (nullable: incluye todos)desde- inicio del rango, inclusivo (nullable)hasta- fin del rango, inclusivo (nullable)- Returns:
- filas ordenadas por cantidad total descendente
-