private void button1_Click(object sender, EventArgs e) { int cantidadPedidos = dataGridIngresoSalida.RowCount; if (cantidadPedidos <= 0) { MessageBox.Show("Debe registrar mínimo un ingreso/salida", "Error"); return; } bool resultado = true; //validar todas las lineas foreach (DataGridViewRow row in dataGridIngresoSalida.Rows) { int cantidadPedido; ProductoAlmacen actual = (ProductoAlmacen)row.DataBoundItem; if (row.Cells["Cantidad"].Value == null || !Int32.TryParse(row.Cells["Cantidad"].Value.ToString(), out cantidadPedido)) { MessageBox.Show("Ha insertado incorrectamente una cantidad", "Error"); dataGridIngresoSalida.CurrentCell = row.Cells["Cantidad"]; resultado = false; return;//debe ir esto en vez de un break con trabajo de variable valido } else if (radioBtnSalida.Checked && cantidadPedido > actual.CantidadAlmacenada) { MessageBox.Show("Está registrando una salida con cantidad mayor al stock actual", "Error"); dataGridIngresoSalida.CurrentCell = row.Cells["Cantidad"]; resultado = false; return;//debe ir esto en vez de un break con trabajo de variable valido } } //fin validacion //inicio mensaje confirmacion string mensajeConf = "Desea confirmar "; if (radioBtnIngreso.Checked) { mensajeConf += "el ingreso de "; } else if (radioBtnSalida.Checked) { mensajeConf += "la salida de "; } mensajeConf += cantidadPedidos.ToString() + " producto"; if (cantidadPedidos > 1) { mensajeConf += "s"; } mensajeConf += "?"; //fin mensaje confirmacion DialogResult res = MessageBox.Show(mensajeConf, "Confirmacion", MessageBoxButtons.YesNo); if (res == DialogResult.No) { return; } //registrar pedido ingreso o salida if (radioBtnIngreso.Checked) { //Sucursal localSeleccionado = (Sucursal)comboBoxLocales.SelectedItem; int idAreaSeleccionada = ((Area)comboBoxAreas.SelectedItem).IdArea; int sedeOrigen = -1; if (idAreaSeleccionada == 1) { Almacen localSeleccionado = (Almacen)comboBoxLocales.SelectedItem; sedeOrigen = localSeleccionado.IdAlmacen; } //Console.WriteLine("Se va a insertar " + this.idAlmacen.ToString() + " " +idAreaSeleccionada.ToString() + " " + sedeOrigen.ToString()); int idIngreso = logicaAlmacenes.registrarIngresoProductos(this.idAlmacen, idAreaSeleccionada, sedeOrigen, textBoxObservaciones.Text); if (idIngreso > 0) { //registrar todas las lineas int idLinea = 0; foreach (DataGridViewRow row in dataGridIngresoSalida.Rows) { int cantidadPedido = Int32.Parse(row.Cells["Cantidad"].Value.ToString()); string observaciones; //se obtienen las observaciones if (row.Cells["Observaciones"].Value != null) { observaciones = row.Cells["Observaciones"].Value.ToString(); } else { observaciones = ""; } //fin observaciones int idProducto = Int32.Parse(row.Cells["Id"].Value.ToString()); //se registra una linea de ingreso idLinea = logicaAlmacenes.registrarLineaIngresoProductos(idIngreso, idProducto, cantidadPedido, observaciones); //en el caso de error al registrar la linea if (idLinea < 0) { resultado = false; break; //ver la forma de regresar, puede ser con un rollback } } } } else if (radioBtnSalida.Checked) { //Sucursal localSeleccionado = (Sucursal)comboBoxLocalSalida.SelectedItem; int idAreaSeleccionada = ((Area)comboBoxAreas2.SelectedItem).IdArea; int idSedeDestino = -1; if (idAreaSeleccionada == 1) { Almacen almacenDestino = (Almacen)comboBoxLocalSalida.SelectedItem; idSedeDestino = almacenDestino.IdAlmacen; } int idSalida = logicaAlmacenes.registrarSalidaProductos(this.idAlmacen, idAreaSeleccionada, idSedeDestino, textBoxObservaciones.Text); if (idSalida > 0) { //registrar todas las lineas int idLinea = 0; foreach (DataGridViewRow row in dataGridIngresoSalida.Rows) { int cantidadPedido = Int32.Parse(row.Cells["Cantidad"].Value.ToString()); string observaciones; if (row.Cells["Observaciones"].Value != null) { observaciones = row.Cells["Observaciones"].Value.ToString(); } else { observaciones = ""; } int idProducto = Int32.Parse(row.Cells["Id"].Value.ToString()); idLinea = logicaAlmacenes.registrarLineaSalidaProductos(idSalida, idProducto, cantidadPedido, observaciones); if (idLinea < 0) { resultado = false; break; //ver la forma de regresar, puede ser con un rollback } } } } if (resultado) { MessageBox.Show("Transaccion Exitosa", "Exito"); this.dataGridIngresoSalida.DataSource = new BindingList <ProductoAlmacen>(); this.textBoxObservaciones.Text = ""; dataGridIngresoSalida.Refresh(); dataGridIngresoSalida.Update(); } else { MessageBox.Show("Hubo un error al registrar el ingreso/salida. Reinténtelo en un momento.", "Error"); } }