private void BtnEliminar_Click(object sender, EventArgs e)
        {
            oEnsamble = new WCF_Ensamble.Hersan_EnsambleClient();
            UbicacionesBE obj = new UbicacionesBE();

            try {
                if (chkEstatus.Checked)
                {
                    if (RadMessageBox.Show("Esta acción dará de baja la ubicación del producto\nDesea continuar...?", this.Text, MessageBoxButtons.YesNo, RadMessageIcon.Question) == DialogResult.Yes)
                    {
                        obj.Id      = int.Parse(txtId.Text);
                        obj.Rack    = cboRack.Text;
                        obj.Fila    = int.Parse(spFila.Value.ToString());
                        obj.Columna = int.Parse(spColumna.Value.ToString());
                        obj.Minimo  = decimal.Parse(spMin.Value.ToString());
                        obj.Maximo  = decimal.Parse(spMax.Value.ToString());
                        obj.DatosUsuario.IdUsuarioModif = BaseWinBP.UsuarioLogueado.ID;
                        obj.DatosUsuario.Estatus        = false;

                        if (oEnsamble.APT_Ubicacion_Actualizar(obj) == 0)
                        {
                            RadMessageBox.Show("Ocurrió un error al modificar los datos", this.Text, MessageBoxButtons.OK, RadMessageIcon.Error);
                        }
                        else
                        {
                            RadMessageBox.Show("Información actualizada correctamente", this.Text, MessageBoxButtons.OK, RadMessageIcon.Info);
                            LimpiarCampos();
                            CargarDatos();
                        }
                    }
                }
            } catch (Exception ex) {
                RadMessageBox.Show("Ocurrio un error al dar de baja el tipo de producto\n" + ex.Message, this.Text, MessageBoxButtons.OK, RadMessageIcon.Error);
            } finally {
                oEnsamble = null;
            }
        }
        private void BtnGuardar_Click(object sender, EventArgs e)
        {
            oEnsamble = new WCF_Ensamble.Hersan_EnsambleClient();
            UbicacionesBE obj = new UbicacionesBE();

            try {
                if (RadMessageBox.Show("Se guardará la ubicación del producto\nDesea continuar...?", this.Text, MessageBoxButtons.YesNo, RadMessageIcon.Question) == DialogResult.No)
                {
                    return;
                }

                foreach (GridViewRowInfo oRow in gvDatos.Rows)
                {
                    if (oRow.Cells["IdAlmacen"].Value.ToString() == cboAlmacen.SelectedValue.ToString() &&
                        oRow.Cells["IdProducto"].Value.ToString() == cboTipo.SelectedValue.ToString() &&
                        oRow.Cells["IdCarcasa"].Value.ToString() == cboColores.SelectedValue.ToString()
                        //&& oRow.Cells["IdReflejante"].Value.ToString() == cboReflejantes.SelectedValue.ToString()
                        && int.Parse(txtId.Text) == 0)
                    {
                        RadMessageBox.Show("El Producto capturado ya tiene ubicación asignada", this.Text, MessageBoxButtons.OK, RadMessageIcon.Exclamation);
                        LimpiarCampos();
                        return;
                    }
                }

                obj.Id = int.Parse(txtId.Text);
                obj.Almacen.Empresa.Id = BaseWinBP.UsuarioLogueado.Empresa.Id;
                obj.Almacen.Id         = int.Parse(cboAlmacen.SelectedValue.ToString());
                obj.Producto.Id        = int.Parse(cboTipo.SelectedValue.ToString());
                obj.Carcasa.Id         = int.Parse(cboColores.SelectedValue.ToString());
                foreach (var item in cboReflejantes.CheckedItems)
                {
                    obj.Reflejante.Nombre += item.Value.ToString() + ",";
                }
                obj.Rack    = cboRack.Text;
                obj.Fila    = int.Parse(spFila.Value.ToString());
                obj.Columna = int.Parse(spColumna.Value.ToString());
                obj.Minimo  = decimal.Parse(spMin.Value.ToString());
                obj.Maximo  = decimal.Parse(spMax.Value.ToString());
                obj.DatosUsuario.Estatus       = chkEstatus.Checked;
                obj.DatosUsuario.IdUsuarioCreo = BaseWinBP.UsuarioLogueado.ID;

                //PROCESO DE GUARDADO Y ACTUALIZACION
                if (txtId.Text == "0")
                {
                    int Result = oEnsamble.APT_Ubicacion_Guardar(obj);
                    if (Result == 0)
                    {
                        RadMessageBox.Show("Ocurrió un error al guardar la ubicación del producto", this.Text, MessageBoxButtons.OK, RadMessageIcon.Error);
                    }
                    else
                    {
                        RadMessageBox.Show("Producto asignado a la ubicación correctamente", this.Text, MessageBoxButtons.OK, RadMessageIcon.Info);
                        LimpiarCampos();
                        CargarDatos();
                    }
                }
                else
                {
                    int Result = oEnsamble.APT_Ubicacion_Actualizar(obj);
                    if (Result == 0)
                    {
                        RadMessageBox.Show("Ocurrió un error al actualizar los datos", this.Text, MessageBoxButtons.OK, RadMessageIcon.Error);
                    }
                    else
                    {
                        RadMessageBox.Show("Información actualizada correctamente", this.Text, MessageBoxButtons.OK, RadMessageIcon.Info);
                        LimpiarCampos();
                        CargarDatos();
                    }
                }
            } catch (Exception ex) {
                RadMessageBox.Show("Ocurrió un error al actualizar la información\n" + ex.Message, this.Text, MessageBoxButtons.OK, RadMessageIcon.Error);
            } finally {
                oEnsamble = null;
            }
        }