public object salidaMultiple(Movimientos salida, int cantidad) { int rs = minPosicion(salida); if (rs == (this.posiciones + 1)) { return("El tunel seleccionado está vacio."); } else if (rs == -1) { return("No existe el tunel seleccionado."); } else if (rs + cantidad > (this.posiciones + 1)) { return("No se puede realizar una salida multiple de " + cantidad + " elementos."); } else { List <Movimientos> lMovimientos = new List <Movimientos> { }; for (int i = 0; i < cantidad; i++) { salida.Posicion = rs + i; int paqueteId = getInPosicion(salida); if (paqueteId != -1) { salida.PaquetesId = paqueteId; salida.Fecha = DateTime.Now; salida.Sentido = -1; lMovimientos.Add((Movimientos)salida.Clone()); } else { return("La posición seleccionada no está ocupada."); } } return(lMovimientos); } }
public object[] salidaParcial(Movimientos salida, int bultosSalen) { object oSalida = this.salida(salida); if (oSalida is string) { return(new[] { oSalida }); } Movimientos mSalida = (Movimientos)oSalida; Movimientos mIngreso = (Movimientos)mSalida.Clone(); Paquetes paqueteActual = _context.Paquetes.Find(mIngreso.PaquetesId); mIngreso.Paquetes = new Paquetes(); mIngreso.Paquetes.ProductoId = paqueteActual.ProductoId; mIngreso.Paquetes.ClienteId = paqueteActual.ClienteId; mIngreso.Paquetes.Lote = paqueteActual.Lote; mIngreso.Sentido = 1; mIngreso.Paquetes.Bultos = paqueteActual.Bultos - bultosSalen; if (mIngreso.Paquetes.Bultos == 0) { return(new[] { "Acción inválida: Si requiere realizar esta operación, por favor haga una salida completa" }); } else if (mIngreso.Paquetes.Bultos < 0) { return(new[] { "Imposible hacer salida por " + bultosSalen + " bultos, solo hay " + paqueteActual.Bultos + " disponibles" }); } return(new[] { mSalida, mIngreso }); }