public void Ejecutar(NVEntities db)
 {
     // throw new NotImplementedException("No se puede finalizar aún");
     try
     {
         db.SaveChanges();
     } catch (Exception ex)
     {
         throw new Exception(ex.InnerException != null ? ex.Message + "\n" + ex.InnerException.Message : ex.Message);
     }
 }
        public static void Persistir(NVEntities db, List<UbicacionPicking> ubicaciones)
        {
            // Esta es la parte que no vamos a poder testar
            /*
             * Si Id = 0 hay que insertar una nueva db.Ubicaciones.add, copiando pasillo, fila, columna de CopiaId
             * Si cantidad es distinto a cantidadNueva hay que modificar y poner estado nuevo, NºOrdenLinPedidoVta
             * y PedidoVta (ojo que el pedido hay que leerlo de db.LinPedidoVtas).
             * */

            foreach(UbicacionPicking ubicacion in ubicaciones)
            {
                Ubicacion ubicacionOriginal;

                // Error cuando llega con Id == 0 y CopiaId == 0. Escribir test que falle y poner
                // un if (ubicacion.Id == 0 && ubicacion.CopiaId == 0), que inserte la ubicación.
                // Lo que está ahora irá en el else de ese if
                if (ubicacion.Id == 0) // && ubicacion.CopiaId != 0
                {
                    ubicacionOriginal = db.Ubicaciones.SingleOrDefault(u => u.NºOrden == ubicacion.CopiaId);
                    Ubicacion nuevaUbicacion = new Ubicacion
                    {
                        Almacén = ubicacionOriginal.Almacén,
                        Cantidad = ubicacion.CantidadNueva,
                        Empresa = ubicacionOriginal.Empresa,
                        Estado = ubicacion.EstadoNuevo,
                        Número = ubicacion.Producto
                    };
                    if (ubicacion.EstadoNuevo != Constantes.Ubicaciones.PENDIENTE_UBICAR)
                    {
                        nuevaUbicacion.Pasillo = ubicacionOriginal.Pasillo;
                        nuevaUbicacion.Fila = ubicacionOriginal.Fila;
                        nuevaUbicacion.Columna = ubicacionOriginal.Columna;
                    };
                    db.Ubicaciones.Add(nuevaUbicacion);
                } else if (ubicacion.Cantidad != ubicacion.CantidadNueva)
                {
                    ubicacionOriginal = db.Ubicaciones.SingleOrDefault(u => u.NºOrden == ubicacion.Id);
                    LinPedidoVta lineaVenta = db.LinPedidoVtas.SingleOrDefault(l => l.Nº_Orden == ubicacion.LineaPedidoVentaId);
                    if (lineaVenta != null)
                    {
                        ubicacionOriginal.PedidoVta = lineaVenta.Número;
                        ubicacionOriginal.NºOrdenVta = ubicacion.LineaPedidoVentaId;
                    }
                    ubicacionOriginal.Estado = ubicacion.EstadoNuevo;
                    ubicacionOriginal.Cantidad = ubicacion.CantidadNueva;
                }
            }
        }
 public GeneradorPendientes(NVEntities db, List<PedidoPicking> pedidos)
 {
     this.db = db;
     this.pedidos = pedidos;
 }
 public GeneradorPortes(NVEntities db, PedidoPicking pedido)
 {
     this.db = db;
     this.pedido = pedido;
 }