public void GestorReservasStock_Reservar_siEsCuentaContableLaAsignaEntera()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                TipoLinea = Constantes.TiposLineaVenta.CUENTA_CONTABLE,
                Producto = "624HOLA",
                Cantidad = 6,
                BaseImponible = 100,
                CantidadReservada = 0,
                FechaEntrega = new DateTime()
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                EsTiendaOnline = false,
                EsNotaEntrega = false,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            // Esto lo rellenaría en ejecución el servicio RellenadorPickingService
            List<PedidoPicking> candidatos = new List<PedidoPicking>();
            candidatos.Add(pedido);

            // Esto lo rellenaría en ejecución el servicio RellenadorStocksService
            StockProducto stock = new StockProducto
            {
                Producto = "A",
                StockDisponible = 1
            };
            List<StockProducto> stocks = new List<StockProducto>();
            stocks.Add(stock);

            List<LineaPedidoPicking> lineas = candidatos.Where(c => !c.EsNotaEntrega).SelectMany(l => l.Lineas).OrderBy(l => l.Id).ToList();

            GestorReservasStock.Reservar(stocks, candidatos, lineas);

            Assert.AreEqual(6, linea.CantidadReservada);
        }
        public void GestorReservasStock_Reservar_siHayUnPedidoQueEsNotaEntregaNoReservaNada()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                TipoLinea = Constantes.TiposLineaVenta.PRODUCTO,
                Producto = "A",
                Cantidad = 16,
                BaseImponible = 100,
                CantidadReservada = 0,
                FechaEntrega = new DateTime()
            };

            LineaPedidoPicking linea2 = new LineaPedidoPicking
            {
                Id = 2,
                TipoLinea = Constantes.TiposLineaVenta.PRODUCTO,
                Producto = "A",
                Cantidad = 7,
                BaseImponible = 100,
                CantidadReservada = 0,
                FechaEntrega = new DateTime()
            };

            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                EsTiendaOnline = false,
                EsNotaEntrega = true,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            PedidoPicking pedido2 = new PedidoPicking
            {
                Id = 2,
                ServirJunto = false,
                EsTiendaOnline = false,
                EsNotaEntrega = false,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido2.Lineas.Add(linea2);

            // Esto lo rellenaría en ejecución el servicio RellenadorPickingService
            List<PedidoPicking> candidatos = new List<PedidoPicking>();
            candidatos.Add(pedido);
            candidatos.Add(pedido2);

            // Esto lo rellenaría en ejecución el servicio RellenadorStocksService
            StockProducto stock = new StockProducto
            {
                Producto = "A",
                StockDisponible = 20
            };
            List<StockProducto> stocks = new List<StockProducto>();
            stocks.Add(stock);

            List<LineaPedidoPicking> lineas = candidatos.Where(c => !c.EsNotaEntrega).SelectMany(l => l.Lineas).OrderBy(l => l.Id).ToList();

            GestorReservasStock.Reservar(stocks, candidatos, lineas);

            Assert.AreEqual(0, linea.CantidadReservada);
            Assert.AreEqual(7, linea2.CantidadReservada);
        }