Ejemplo n.º 1
0
        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");
            }
        }