Class VentaServiceImpl

java.lang.Object
com.deusto.coffeestack.service.VentaServiceImpl
All Implemented Interfaces:
VentaService

@Service public class VentaServiceImpl extends Object implements VentaService
Implementación del servicio de ventas.

Lógica de descuento de inventario:

  1. Para cada línea de venta se obtiene la receta del item.
  2. Por cada ingrediente se calcula la cantidad total necesaria (cantidadUnidades × cantidad_receta).
  3. Los lotes del insumo se consumen en orden FIFO (más próximo a vencer primero). Si el stock total es insuficiente se lanza IllegalStateException y la transacción se revierte.
  4. Por cada lote afectado se genera un MovimientoInventario de tipo TipoMovimiento.VENTA.
  5. Se persiste la Venta con sus VentaLinea.