public void GestorImportesMinimos_LosProductosSobrePedidoLleganAlImporteMinimo_siEsDeTiendaOnlineMiraOtroImporteMinimo()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                Cantidad = 7,
                BaseImponible = GestorImportesMinimos.IMPORTE_MINIMO_TIENDA_ONLINE + 1,
                CantidadReservada = 7,
                FechaEntrega = new DateTime(),
                EsSobrePedido = true
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                EsTiendaOnline = true,
                EsNotaEntrega = false,
                ImporteOriginalNoSobrePedido = GestorImportesMinimos.IMPORTE_MINIMO_TIENDA_ONLINE + 1,
                ImporteOriginalSobrePedido = 0,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            GestorImportesMinimos gestor = new GestorImportesMinimos(pedido);

            Assert.IsTrue(gestor.LosProductosSobrePedidoLleganAlImporteMinimo());
        }
        public void GestorReservasStock_BorrarLineasEntregaFutura_despuesDeEjecutarloLasLineasFuturasNoEstan()
        {
            LineaPedidoPicking lineaParaEntregaInmediata = new LineaPedidoPicking
            {
                Id = 2,
                Producto = "A",
                Cantidad = 16,
                BaseImponible = 100,
                CantidadReservada = 0,
                FechaEntrega = new DateTime()
            };

            LineaPedidoPicking lineaParaEntregaFutura = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                Cantidad = 7,
                BaseImponible = 100,
                CantidadReservada = 0,
                FechaEntrega = new DateTime().AddDays(7)
            };

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

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

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

            GestorReservasStock.BorrarLineasEntregaFutura(candidatos, new DateTime().AddDays(1));

            Assert.AreEqual(1, pedido.Lineas.Count);
            Assert.AreEqual(0, pedido2.Lineas.Count);
        }
예제 #3
0
        public void PedidoPicking_hayQueSumarPortes_siHayProductosQueNoSonSobrePedidoYElOriginalLlegabaAlMinimoNoSeSumanPortes()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                Cantidad = 6,
                CantidadReservada = 6,
                EsSobrePedido = false
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                ImporteOriginalNoSobrePedido = GestorImportesMinimos.IMPORTE_MINIMO + 1,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            Assert.IsFalse(pedido.hayQueSumarPortes());
        }
예제 #4
0
        public void GestorStocks_HayDeTodo_siTieneDosProductosYUnoNoTieneStockDevuelveFalse()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                TipoLinea = Constantes.TiposLineaVenta.PRODUCTO,
                Producto = "A",
                Cantidad = 7,
                BaseImponible = 100,
                CantidadReservada = 7,
                FechaEntrega = new DateTime()
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                EsTiendaOnline = false,
                EsNotaEntrega = false,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

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

            pedido.Lineas.Add(linea2);

            GestorStocks gestor = new GestorStocks(pedido);

            Assert.IsFalse(gestor.HayStockDeTodo());
        }
예제 #5
0
        public void GestorStocks_HayDeTodo_siSoloTieneUnProductoYTieneStockDevuelveTrue()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                Cantidad = 7,
                BaseImponible = 100,
                CantidadReservada = 7,
                FechaEntrega = new DateTime()
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                EsTiendaOnline = false,
                EsNotaEntrega = false,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);
            GestorStocks gestor = new GestorStocks(pedido);

            Assert.IsTrue(gestor.HayStockDeTodo());
        }
예제 #6
0
        public void PedidoPicking_saleEnPicking_siNoHayNingunaLineaNoSale()
        {
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = true,
                Lineas = new List<LineaPedidoPicking>()
            };

            Assert.IsFalse(pedido.saleEnPicking());
        }
예제 #7
0
        public void PedidoPicking_saleEnPicking_siNoHayDeTodoYEsServirJuntoNoSale()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                TipoLinea = Constantes.TiposLineaVenta.PRODUCTO,
                Producto = "A",
                Cantidad = 6,
                CantidadReservada = 5
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = true,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            Assert.IsFalse(pedido.saleEnPicking());
        }
예제 #8
0
        public void PedidoPicking_hayQueSumarPortes_siYaTienePortesNoHayQueSumarlosDeNuevo()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                TipoLinea = Constantes.TiposLineaVenta.CUENTA_CONTABLE,
                Producto = "62400003",
                Cantidad = 6,
                CantidadReservada = 0,
                BaseImponible = GestorImportesMinimos.IMPORTE_MINIMO - 1,
                EsSobrePedido = true
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                ImporteOriginalNoSobrePedido = GestorImportesMinimos.IMPORTE_MINIMO - 1,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            Assert.IsFalse(pedido.hayQueSumarPortes());
        }
예제 #9
0
 public void PedidoPicking_Constructor_CrearUnObjeto()
 {
     PedidoPicking pedidoPicking = new PedidoPicking();
     Assert.IsNotNull(pedidoPicking);
 }
예제 #10
0
        public void GestorStock_HayDeTodo_siHayUnaLineaDeCuentaContableTieneQuePonerQueTieneStock()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                TipoLinea = Constantes.TiposLineaVenta.CUENTA_CONTABLE,
                Producto = "A",
                Cantidad = 7,
                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);

            GestorStocks gestor = new GestorStocks(pedido);

            Assert.IsTrue(gestor.HayStockDeTodo());
        }
예제 #11
0
 public GeneradorPortes(NVEntities db, PedidoPicking pedido)
 {
     this.db = db;
     this.pedido = pedido;
 }
        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);
        }
        public void GestorImportesMinimos_LosProductosSobrePedidoLleganAlImporteMinimo_siHayLineasSobrePedidoQueSuperanElMinimoDevuelveTrue()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                Cantidad = 7,
                BaseImponible = 2500,
                CantidadReservada = 7,
                FechaEntrega = new DateTime(),
                EsSobrePedido = true
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                EsTiendaOnline = false,
                EsNotaEntrega = false,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            GestorImportesMinimos gestor = new GestorImportesMinimos(pedido);

            Assert.IsTrue(gestor.LosProductosSobrePedidoLleganAlImporteMinimo());
        }
예제 #15
0
        public void PedidoPicking_hayQueSumarPortes_siNoHayStockDeNadaNoHayQueSumarPortes()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                Cantidad = 6,
                CantidadReservada = 0,
                BaseImponible = 0
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                ImporteOriginalNoSobrePedido = GestorImportesMinimos.IMPORTE_SIN_PORTES + 1,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            Assert.IsFalse(pedido.hayQueSumarPortes());
        }
예제 #16
0
 public GestorStocks(PedidoPicking pedido)
 {
     this.pedido = pedido;
 }
예제 #17
0
        public void PedidoPicking_hayQueSumarPortes_siTodosLosProductosSonSobrePedidoYLleganAlImporteMinimoNoSeSumanPortes()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                Cantidad = 6,
                CantidadReservada = 6,
                BaseImponible = GestorImportesMinimos.IMPORTE_MINIMO + 1,
                EsSobrePedido = true
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            Assert.IsFalse(pedido.hayQueSumarPortes());
        }
예제 #18
0
        public void PedidoPicking_hayQueSumarPortes_siTodosLosProductosSonSobrePedidoYNoLleganAlImporteMinimoPeroElOriginalSiLlegabaAlImporteExentoDePortesNoSeSumanPortes()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                TipoLinea = Constantes.TiposLineaVenta.PRODUCTO,
                Cantidad = 6,
                CantidadReservada = 6,
                BaseImponible = GestorImportesMinimos.IMPORTE_MINIMO - 1,
                EsSobrePedido = true
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                ImporteOriginalNoSobrePedido = GestorImportesMinimos.IMPORTE_SIN_PORTES + 1,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            Assert.IsTrue(pedido.hayQueSumarPortes());
        }
 public GestorImportesMinimos(PedidoPicking pedido)
 {
     this.pedido = pedido;
     this.importeMinimo = pedido.EsTiendaOnline ? IMPORTE_MINIMO_TIENDA_ONLINE : IMPORTE_MINIMO;
 }
예제 #20
0
        public void GestorStocks_TodoLoQueTieneStockEsSobrePedido_siHayUnProductoQueNoEsSobrePedidoConStockDevuelveFalse()
        {
            LineaPedidoPicking linea = new LineaPedidoPicking
            {
                Id = 1,
                Producto = "A",
                Cantidad = 7,
                BaseImponible = 100,
                CantidadReservada = 7,
                FechaEntrega = new DateTime(),
                EsSobrePedido = false
            };
            PedidoPicking pedido = new PedidoPicking
            {
                Id = 1,
                ServirJunto = false,
                EsTiendaOnline = false,
                EsNotaEntrega = false,
                Lineas = new List<LineaPedidoPicking>()
            };
            pedido.Lineas.Add(linea);

            GestorStocks gestor = new GestorStocks(pedido);

            Assert.IsFalse(gestor.TodoLoQueTieneStockEsSobrePedido());
        }