public IActionResult AddCompra(long orden, [FromBody] Compras compra) { try { if (ModelState.IsValid) { foreach (ProductosCompra item in compra.ProductosCompra) { ProductoAlmacen productoAlmacen = PosUoW.ProductoAlmacenRepository.GetSingleByCriteria(x => x.idProducto.Equals(item.idProducto) && x.idAlmacen.Equals(compra.idAlmacen)); List <ProductoAlmacen> existenciaProducto = PosUoW.ProductoAlmacenRepository.GetAllByCriteria(x => x.idProducto.Equals(item.idProducto), x => x.idProductoAlmacen).ToList(); float existencia = existenciaProducto.Sum(x => x.Existencia); Productos producto = PosUoW.ProductosRepository.GetById(a => a.idProducto.Equals(item.idProducto)); float dif = existencia < 0 ? existencia : 0; item.Restante = item.Cantidad + dif; item.Costo = item.Monto / item.Cantidad; if (productoAlmacen != null) { productoAlmacen.Existencia += item.Cantidad; PosUoW.ProductoAlmacenRepository.Update(productoAlmacen); } else { productoAlmacen = new ProductoAlmacen { Existencia = item.Cantidad, idAlmacen = compra.idAlmacen, idProducto = producto.idProducto }; PosUoW.ProductoAlmacenRepository.Add(productoAlmacen); } if (item.Costo != producto.PrecioCosto) { producto.PrecioCosto = item.Costo; PosUoW.ProductosRepository.Update(producto); } } Ordenes ordenResult = PosUoW.OrdenesRepository.GetById(x => x.idOrden.Equals(orden)); PosUoW.ComprasRepository.Add(compra); PosUoW.Save(); if (ordenResult != null) { ordenResult.idCompra = compra.FolioCompra; ordenResult.Estatus = 'S'; PosUoW.OrdenesRepository.Update(ordenResult); } PosUoW.Save(); return(Ok(compra)); } else { return(BadRequest("Los datos de la venta son incorrectos")); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, ex)); } }
private void toolStripButton2_Click(object sender, EventArgs e) { if (dataGridStock.CurrentRow != null) { ProductoAlmacen productoSeleccionado = (ProductoAlmacen)dataGridStock.CurrentRow.DataBoundItem; BindingList <ProductoAlmacen> lista = (BindingList <ProductoAlmacen>)dataGridStock.DataSource; lista.Remove(productoSeleccionado); dataGridStock.Refresh(); dataGridStock.Update(); } }
public BindingList <ProductoAlmacen> obtenerProductosAlmacen(int idAlmacen, int idProd, string nombreBuscar, int limInferior, int limSuperior) { BindingList <ProductoAlmacen> resultado = new BindingList <ProductoAlmacen>(); try { MySqlConnection con = new MySqlConnection(this.cadenaConexion); con.Open(); MySqlCommand comando = new MySqlCommand(); comando.CommandText = "alm_buscar_productosAlmacenId"; comando.CommandType = System.Data.CommandType.StoredProcedure; comando.Connection = con; comando.Parameters.Add("_idProd", MySqlDbType.Int32).Value = idProd; comando.Parameters.Add("_id_almacen", MySqlDbType.Int32).Value = idAlmacen; comando.Parameters.Add("_nombreBuscar", MySqlDbType.VarChar).Value = nombreBuscar; comando.Parameters.Add("_limInferior", MySqlDbType.Int32).Value = limInferior; comando.Parameters.Add("_limSuperior", MySqlDbType.Int32).Value = limSuperior; MySqlDataReader reader = comando.ExecuteReader(); while (reader.Read()) { int idProducto = reader.GetInt32("id_producto"); // //string codigo = reader.GetString("codigo_producto");// string nombre = reader.GetString("nombre"); // string descripcion = reader.GetString("descripcion"); int stock = reader.GetInt32("cantidadAlmacenada"); decimal precio = reader.GetDecimal("precio_venta"); Producto producto = new Producto(); producto.Id = idProducto; producto.Nombre = nombre; //producto.CodigoProducto = codigo; producto.Descripcion = descripcion; producto.Precio = (double)precio; ProductoAlmacen productoAlmacen = new ProductoAlmacen(); productoAlmacen.ProductoAlmacenado = producto; productoAlmacen.CantidadAlmacenada = stock; resultado.Add(productoAlmacen); } con.Close(); } catch (Exception e) { Console.WriteLine("Error en obtenerProductosAlmacenId"); Console.WriteLine(e.Message); } return(resultado); }
public PantallaAnadirProducto(int idAlmacen) { InitializeComponent(); logicaProductos = new AlmacenProductosBL(); this.idAlmacen = idAlmacen; this.prodAlmReciente = null; dataGridProductosRegistrables.AutoGenerateColumns = false; dataGridProductosRegistrables.DataSource = logicaProductos.obtenerProductosRegistrables(this.idAlmacen); txtNumResultados.Text = ((BindingList <Producto>)dataGridProductosRegistrables.DataSource).Count.ToString() + " Resultado(s)"; txtNumResultados.Visible = true; logicaProductos.actualizarAlmacenPedidoProd(); }
private int buscarProductoAlmacen(ProductoAlmacen productoAlmacen) { BindingList <ProductoAlmacen> lista = (BindingList <ProductoAlmacen>)dataGridStock.DataSource; int index = 0; foreach (ProductoAlmacen prodAlm in lista) { if (prodAlm.Id == productoAlmacen.Id) { return(index); } index++; } return(-1); }
private void btnInsertarProducto_MouseClick(object sender, MouseEventArgs e) { Producto productoSeleccionado; if (dataGridProductosRegistrables.CurrentRow != null) { productoSeleccionado = (Producto)dataGridProductosRegistrables.CurrentRow.DataBoundItem; } else { MessageBox.Show("Debe seleccionar un producto de la lista", "Error"); return; } DialogResult res = MessageBox.Show("Desea confirmar el registro del producto : \n" + productoSeleccionado.Id + " " + productoSeleccionado.CodigoProducto + " " + productoSeleccionado.Nombre + " con stock inicial " + numericUpDown1.Value.ToString() + "?", "Confirmacion", MessageBoxButtons.YesNo); if (res == DialogResult.Yes) { if (logicaProductos.registrarProductoAlmacen(this.idAlmacen, productoSeleccionado.Id, (int)numericUpDown1.Value)) { BindingList <Producto> productos = (BindingList <Producto>)dataGridProductosRegistrables.DataSource; prodAlmReciente = new ProductoAlmacen(); prodAlmReciente.ProductoAlmacenado = productoSeleccionado; prodAlmReciente.CantidadAlmacenada = (int)Math.Round(numericUpDown1.Value); productos.Remove(productoSeleccionado); dataGridProductosRegistrables.DataSource = productos; dataGridProductosRegistrables.Update(); dataGridProductosRegistrables.Refresh(); numericUpDown1.Value = 0; MessageBox.Show("El producto se insertó correctamente", "Transaccion Exitosa"); } else { MessageBox.Show("El producto no se pudo insertar correctamente", "Error"); } } }
private void toolStripButton1_Click(object sender, EventArgs e) { PantallaSeleccionarProducto newPant = new PantallaSeleccionarProducto(idAlmacen); newPant.ShowDialog(); ProductoAlmacen productoSeleccionado = newPant.ProductoSeleccionado; newPant.Dispose(); detallesPedido = (BindingList <ProductoAlmacen>)dataGridStock.DataSource; if (productoSeleccionado != null && buscarProductoAlmacen(productoSeleccionado) == -1) { detallesPedido.Add(productoSeleccionado); } dataGridStock.Update(); dataGridStock.Refresh(); }
public IActionResult CancelaVenta([FromBody] CancelacionDto cancelacion) { try { Ventas venta = PosUoW.VentasRepository.GetVentaByFolio(cancelacion.folioVenta); if (venta != null) { venta.Estatus = 'C'; venta.idUsuarioCancela = cancelacion.idUsuario; foreach (VentaLote lote in venta.Lotes) { ProductosCompra compra = PosUoW.ProductosCompraRepository.GetById(a => a.idCompraProducto.Equals(lote.idProductoCompra)); if (compra != null) { compra.Restante += lote.cantidad; } lote.estatus = false; } foreach (ProductosVenta producto in venta.Productos) { producto.Estatus = false; Productos currentProduct = PosUoW.ProductosRepository.GetById(x => x.idProducto.Equals(producto.idProducto)); Almacenes principalWarehouse = PosUoW.AlmacenesRepository.GetSingleByCriteria(x => x.Principal); ProductoAlmacen almacen = PosUoW.ProductoAlmacenRepository.GetSingleByCriteria(x => x.idProducto.Equals(currentProduct.idProducto) && x.idAlmacen.Equals(principalWarehouse.idAlmacen)); almacen.Existencia += producto.Cantidad; } PosUoW.Save(); return(Ok(venta)); } else { return(NotFound()); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, ex)); } }
public int AgregarProducto(ProductoCLS objProductoCLS) { int CodResult = 0; var productoUnidad = objProductoCLS.CadenaUnd.Split('|'); var productoAlmacen = objProductoCLS.CadenaAlm.Split('|'); try { using (var db = new BDVentasEntities()) { //INI PRODUCTO Producto objProducto = new Producto(); objProducto.CodigoProducto = objProductoCLS.CodigoProducto; objProducto.NombreProducto = objProductoCLS.NombreProducto; objProducto.IdLinea = objProductoCLS.IdLinea; objProducto.IdMarca = objProductoCLS.IdMarca; objProducto.IdMoneda = objProductoCLS.IdMoneda; objProducto.IdImpuesto = objProductoCLS.IdImpuesto; objProducto.IdProveedor = objProductoCLS.IdProveedor; objProducto.EstadoEliminacion = false; objProducto.FechaCreacion = DateTime.Now; objProducto.UsuarioCreacion = "Admin"; objProducto.FechaModificacion = DateTime.Now; objProducto.UsuarioModificacion = "Admin"; objProducto.EstadoProducto = true; db.Producto.Add(objProducto); db.SaveChanges(); var IdProducto = objProducto.IdProducto; //FIN PRODUCTO //INI PRODUCTO UNIDAD for (int i = 0; i < productoUnidad.Length; i++) { var PrdUnd = productoUnidad[i].Split(','); ProductoUnidad objProdUnd = new ProductoUnidad(); objProdUnd.IdProducto = IdProducto; objProdUnd.IdUnidad = int.Parse(PrdUnd[0]); objProdUnd.IsUnidadBase = bool.Parse(PrdUnd[1]); objProdUnd.IsUnidadVenta = bool.Parse(PrdUnd[2]); objProdUnd.EstadoProductoUnidad = bool.Parse(PrdUnd[3]); objProdUnd.FechaCreacion = DateTime.Now; objProdUnd.UsuarioCreacion = "Admin"; objProdUnd.FechaModificacion = DateTime.Now; objProdUnd.UsuarioModificacion = "Admin"; objProdUnd.EstadoEliminacion = false; db.ProductoUnidad.Add(objProdUnd); db.SaveChanges(); } //FIN PRODUCTO UNIDAD //INI PRODUCTO ALMACÉN List <SucursalCLS> lsSucursal = new List <SucursalCLS>(); for (int i = 0; i < productoAlmacen.Length; i++) { var prdPrdAlm = productoAlmacen[i].Split(','); lsSucursal.Add(new SucursalCLS { IdSucursal = int.Parse(prdPrdAlm[1]) }); ProductoAlmacen objPrdAlm = new ProductoAlmacen(); objPrdAlm.IdProducto = IdProducto; objPrdAlm.IdAlmacen = int.Parse(prdPrdAlm[0]); objPrdAlm.IsActivo = bool.Parse(prdPrdAlm[2]); objPrdAlm.StockFisico = 0; objPrdAlm.StockSistema = 0; objPrdAlm.FechaCreacion = DateTime.Now; objPrdAlm.UsuarioCreacion = "Admin"; objPrdAlm.FechaModificacion = DateTime.Now; objPrdAlm.UsuarioModificacion = "Admin"; objPrdAlm.EstadoEliminación = false; db.ProductoAlmacen.Add(objPrdAlm); db.SaveChanges(); } //FIN PRODUCTO ALMACÉN //INI PRODUCTO SUCURSAL COSTO List <int> PrdSuc = null; PrdSuc = lsSucursal.Select(x => x.IdSucursal).Distinct().ToList(); for (int i = 0; i < PrdSuc.Count; i++) { ProductoSucursalCosto objPrdSucCost = new ProductoSucursalCosto(); objPrdSucCost.IdSucursal = PrdSuc[i]; objPrdSucCost.IdProducto = objProducto.IdProducto; objPrdSucCost.CostoUnitario = 0; db.ProductoSucursalCosto.Add(objPrdSucCost); db.SaveChanges(); } //FIN PRODUCTO SUCURSAL COSTO CodResult = 1; } } catch (Exception ex) { CodResult = 0; } return(CodResult); }
private void dgv_ProductosVenta_DoubleClick(object sender, EventArgs e) { Producto auxProductoCompra; FrmCantidadAComprar frmCantidadAComprar = new FrmCantidadAComprar(); int auxCantidad; //obtengo el numero de articulo del producto seleccionado int auxNumArtProducto = (int)dgv_ProductosVenta.CurrentRow.Cells["NumArticulo"].Value; //obtengo el indice del articulo seleccionado en base a su id del producto int auxIndiceProducto = Comercio.GetIndiceProductoByIdProducto(auxNumArtProducto); //Producto.ETipo auxTipoProducto = (Producto.ETipo)dgv_ProductosVenta.CurrentRow.Cells["Tipo"].Value; string auxTipoProducto = dgv_ProductosVenta.CurrentRow.Cells["Tipo"].Value.ToString(); frmCantidadAComprar.IndiceProducto = auxIndiceProducto; if (frmCantidadAComprar.ShowDialog() == DialogResult.OK) { auxCantidad = frmCantidadAComprar.CantidadAComprar; switch (auxTipoProducto) { case "Almacen": auxProductoCompra = new ProductoAlmacen(auxNumArtProducto, Comercio.MisProductos[auxIndiceProducto].Descripcion, Comercio.MisProductos[auxIndiceProducto].PrecioUnitario, auxCantidad, Producto.ETipo.Almacen); if (auxProductoCompra == auxListaProductos) { for (int i = 0; i < auxListaProductos.Count; i++) { if (auxListaProductos[i].NumArticulo == auxProductoCompra.NumArticulo) { auxListaProductos[i].Unidades += auxCantidad; } } } else { if (auxListaProductos + auxProductoCompra) { } } auxPrecioTotal += auxProductoCompra.PrecioUnitario * auxProductoCompra.Unidades; break; case "Refrigerado": auxProductoCompra = new ProductoRefrigerado(auxNumArtProducto, Comercio.MisProductos[auxIndiceProducto].Descripcion, Comercio.MisProductos[auxIndiceProducto].PrecioUnitario, auxCantidad, Producto.ETipo.Refrigerado); if (auxProductoCompra == auxListaProductos) { for (int i = 0; i < auxListaProductos.Count; i++) { if (auxListaProductos[i].NumArticulo == auxProductoCompra.NumArticulo) { auxListaProductos[i].Unidades += auxCantidad; } } } else { if (auxListaProductos + auxProductoCompra) { } } auxPrecioTotal += auxProductoCompra.PrecioUnitario * auxProductoCompra.Unidades; break; case "Revista": auxProductoCompra = new ProductoRevista(auxNumArtProducto, Comercio.MisProductos[auxIndiceProducto].Descripcion, Comercio.MisProductos[auxIndiceProducto].PrecioUnitario, auxCantidad, Producto.ETipo.Revista); if (auxProductoCompra == auxListaProductos) { for (int i = 0; i < auxListaProductos.Count; i++) { if (auxListaProductos[i].NumArticulo == auxProductoCompra.NumArticulo) { auxListaProductos[i].Unidades += auxCantidad; } } } else { if (auxListaProductos + auxProductoCompra) { } } auxPrecioTotal += auxProductoCompra.PrecioUnitario * auxProductoCompra.Unidades; break; } lbl_MontoTotal.Text = auxPrecioTotal.ToString(); RefrescarDgvCarritoVenta(auxListaProductos); RefrescarDgvProductosVenta(Comercio.ProductosEnStock()); } }
private void button1_Click(object sender, EventArgs e) { if (!verificarCamposLineaPedido()) { return; } if (dataGridStock.CurrentRow == null) { MessageBox.Show("Debe seleccionar una fila para continuar", "Error"); return; } DialogResult resultado = MessageBox.Show("Desea confirmar la solicitud?", "Confirmacion", MessageBoxButtons.YesNo); if (resultado == DialogResult.Yes) { ProductoAlmacen productoAlmacenSeleccionado = (ProductoAlmacen)dataGridStock.CurrentRow.DataBoundItem; bool registroCorrecto; int idPedido = almacenBL.registrarPedidoProduccion(idAlmacen, out registroCorrecto); if (!registroCorrecto) { MessageBox.Show("Error en la conexion. Inténtelo nuevamente.", "Error"); return; } else { foreach (DataGridViewRow row in dataGridStock.Rows) { int idProducto = Int32.Parse(row.Cells["Id"].Value.ToString()); int cantidadPedido = Int32.Parse(row.Cells["CantidadSolicitar"].Value.ToString()); string observaciones; if (row.Cells["Observaciones"].Value != null) { observaciones = row.Cells["Observaciones"].Value.ToString(); } else { observaciones = ""; } almacenBL.registrarLineaPedido(idPedido, idProducto, cantidadPedido, observaciones, out registroCorrecto); if (!registroCorrecto) { MessageBox.Show("Error en la conexion. Inténtelo nuevamente."); //regresar borrando el pedido return; } } } //registrar todos los detalles del pedido dataGridStock.DataSource = null; dataGridStock.Refresh(); dataGridStock.Update(); if (idPedido > 0) { MessageBox.Show("Se registró el pedido correctamente", "Éxito"); } else { MessageBox.Show("Ocurrió un error al registrar el pedido, inténtelo nuevamente", "Error"); } } }
private void tablaProductosAlmacen_SelectionChanged(object sender, EventArgs e) { productoAlmacenSeleccionado = (ProductoAlmacen)tablaProductosAlmacen.CurrentRow.DataBoundItem; this.actualizarInfoSeleccionado(); }
public IActionResult AddVenta([FromBody] Ventas venta) { try { if (ModelState.IsValid) { float utilidad = 0; foreach (ProductosVenta item in venta.Productos) { item.Estatus = true; Productos producto = PosUoW.ProductosRepository.GetById(a => a.idProducto.Equals(item.idProducto)); List <ProductosCompra> productosCompra = PosUoW.ProductosCompraRepository.GetAllByCriteria(x => x.idProducto.Equals(producto.idProducto) && x.Restante > 0, x => x.idCompraProducto).ToList(); float restante = item.Cantidad; for (int i = 0; i < productosCompra.Count(); i++) { VentaLote lote = new VentaLote(); ProductosCompra productoCompra = productosCompra.ElementAt(i); if (productoCompra.Restante == restante) { lote.idProducto = producto.idProducto; lote.idProductoCompra = productoCompra.idCompraProducto; lote.estatus = true; lote.cantidad = restante; restante = 0; utilidad += productoCompra.Restante * productoCompra.Costo; productoCompra.Restante = 0; i = productosCompra.Count(); } else if (productoCompra.Restante > restante) { lote.idProducto = producto.idProducto; lote.idProductoCompra = productoCompra.idCompraProducto; lote.estatus = true; lote.cantidad = restante; utilidad += restante * productoCompra.Costo; productoCompra.Restante -= restante; i = productosCompra.Count(); restante = 0; } else { lote.idProducto = producto.idProducto; lote.idProductoCompra = productoCompra.idCompraProducto; lote.estatus = true; lote.cantidad = productoCompra.Restante; utilidad += productoCompra.Restante * productoCompra.Costo; restante -= productoCompra.Restante; productoCompra.Restante = 0; } venta.Lotes.Add(lote); PosUoW.ProductosCompraRepository.Update(productoCompra); } if (restante > 0) { utilidad += restante * producto.PrecioCosto; } Almacenes principalWarehouse = PosUoW.AlmacenesRepository.GetSingleByCriteria(x => x.Principal); ProductoAlmacen almacen = PosUoW.ProductoAlmacenRepository.GetSingleByCriteria(x => x.idProducto.Equals(item.idProducto) && x.idAlmacen.Equals(principalWarehouse.idAlmacen)); if (almacen == null) { almacen = new ProductoAlmacen { idAlmacen = principalWarehouse.idAlmacen, idProducto = producto.idProducto, Existencia = 0 }; PosUoW.ProductoAlmacenRepository.Add(almacen); PosUoW.Save(); } almacen.Existencia -= item.Cantidad; PosUoW.ProductosRepository.Update(producto); } utilidad = (float)Math.Round((venta.Total - venta.Impuestos) - utilidad, 2); venta.Utilidad = utilidad; PosUoW.VentasRepository.Add(venta); PosUoW.Save(); return(Ok(new { venta = venta, totalEfectivo = totalEfectivo(venta.idUsuario) })); } else { return(BadRequest("Los datos de la venta son incorrectos")); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, ex)); } }
private void dataGridStock_SelectionChanged(object sender, EventArgs e) { productoAlmacenSeleccionado = (ProductoAlmacen)dataGridStock.CurrentRow.DataBoundItem; this.actualizarInfoSeleccionado(); }
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"); } }