private void btnImprimirTomaControl_Click(object sender, EventArgs e)
        {
            if (revisionesPendientes == null || dgvRevisiones.SelectedRows.Count == 0)
            {
                Utils.Utils.Error(null, "Debe seleccionar una revisiĆ³n pendiente");
                return;
            }

            String cadenaId = dgvRevisiones.SelectedRows[0].Cells["Revision"].Value.ToString();
            RevisionInventario revision = null;
            foreach (RevisionInventario rev in revisionesPendientes)
            {
                if (rev.Id.ToString() == cadenaId)
                {
                    revision = rev;
                    break;
                }
            }

            Revisiones dsRevision = new Revisiones();

            Local local = revision.Local;

            #region "Local"
            Revisiones.LocalRow filaLocal = dsRevision.Local.NewLocalRow();

            filaLocal.Direccion = local.Direccion;
            filaLocal.estado = local.Estado;
            filaLocal.fechaApertura = local.FechaApertura == null ? DateTime.MinValue : local.FechaApertura.Value;
            filaLocal.IdLocal = local.Id;
            filaLocal.Nombre = local.Nombre;
            filaLocal.Telefono = local.Telefono;

            dsRevision.Local.AddLocalRow(filaLocal);
            #endregion

            #region "RevisionInventario"
            dsRevision.RevisionInventario.AddRevisionInventarioRow(
                revision.FechaRevision == null ? DateTime.MinValue : revision.FechaRevision.Value,
                revision.HoraRevision == null ? DateTime.MinValue : revision.HoraRevision.Value,
                revision.Empleado.Id,
                filaLocal,
                revision.NroControl.Id,
                revision.Descripcion);
            #endregion
            ArticuloXLocalBL artxlocBL = new ArticuloXLocalBL();

            //Guille
            IList<ArticuloXLocal> listaArtXLoc = artxlocBL.buscarTodosEnLocal(local.Id);
            int i = 1;
            //hasta aqui

            foreach (ArticuloXLocal articuloXLocal in local.LocalArticuloXLocalfk)
            {
                #region "Articulo"
                Articulo articulo = articuloXLocal.Articulo;

                Revisiones.ArticuloRow filaArticulo = dsRevision.Articulo.FindByIdArticulo(articulo.Id);

                if (filaArticulo == null)
                {
                    filaArticulo = dsRevision.Articulo.NewArticuloRow();

                    filaArticulo.Anho = articulo.Anho;
                    filaArticulo.AutorDirector = articulo.AutorDirector;
                    filaArticulo.Categoria = articulo.Categoria.Id;
                    filaArticulo.CodigoArticulo = articulo.CodigoArticulo;
                    filaArticulo.Edicion = articulo.Edicion;
                    filaArticulo.EditorialProductora = articulo.EditorialProductora;
                    filaArticulo.Estado = articulo.Estado;
                    filaArticulo.Formato = articulo.Formato;
                    filaArticulo.IdArticulo = articulo.Id;
                    filaArticulo.IndIGV = articulo.IndIGV;
                    filaArticulo.ISBN = articulo.ISBN;
                    filaArticulo.PrecioVenta = articulo.PrecioVenta;
                    filaArticulo.Tipo = articulo.Tipo;
                    filaArticulo.Titulo = articulo.Titulo;

                    dsRevision.Articulo.AddArticuloRow(filaArticulo);
                }
                #endregion

                #region "ArticuloXLocal"
                Revisiones.ArticuloXLocalRow filaArticuloXLocal = dsRevision.ArticuloXLocal.NewArticuloXLocalRow();

                filaArticuloXLocal.ArticuloRow = filaArticulo;
                filaArticuloXLocal.Cantidad = articuloXLocal.Cantidad==null?0:articuloXLocal.Cantidad.Value;
                filaArticuloXLocal.IdArticulo = articuloXLocal.Articulo.Id;
                filaArticuloXLocal.IdArticuloXLocal = articuloXLocal.Id;
                filaArticuloXLocal.IdLocal = articuloXLocal.Local.Id;
                filaArticuloXLocal.LocalRow = filaLocal;

                dsRevision.ArticuloXLocal.AddArticuloXLocalRow(filaArticuloXLocal);
                #endregion
            }

            foreach (Zona zona in local.LocalZonafk)
            {
                #region "Zona"
                Revisiones.ZonaRow filaZona = dsRevision.Zona.NewZonaRow();

                filaZona.Anaqueles = zona.Anaqueles == null ? 0 : zona.Anaqueles.Value;
                filaZona.CodZona = zona.Id;
                filaZona.DescZona = zona.DescZona;
                filaZona.IdLocal = zona.Local.Id;
                //filaZona.LocalRow = filaLocal;

                dsRevision.Zona.AddZonaRow(filaZona);
                #endregion

                foreach (Anaquel anaquel in zona.ZonaAnaquelfk)
                {
                    #region "Anaquel"
                    Revisiones.AnaquelRow filaAnaquel = dsRevision.Anaquel.NewAnaquelRow();

                    filaAnaquel.CodAnaquel = anaquel.Id;
                    filaAnaquel.CodZona = anaquel.CodZona.Id;
                    filaAnaquel.Divisiones = anaquel.Divisiones == null ? 0 : anaquel.Divisiones.Value;
                    filaAnaquel.Nombre = anaquel.Nombre;
                    filaAnaquel.ZonaRow = filaZona;

                    dsRevision.Anaquel.AddAnaquelRow(filaAnaquel);
                    #endregion
                    //Guille
                    List<AnaquelXArticuloXLocal> AnaqXArtXLoc = new List<AnaquelXArticuloXLocal>();

                    foreach (ArticuloXLocal art in listaArtXLoc)
                    {

                        AnaquelXArticuloXLocal AnXArXLo = new AnaquelXArticuloXLocal();
                        AnXArXLo.ArticuloXLocal = art;
                        AnXArXLo.CodAnaquel = anaquel;
                        AnXArXLo.Cantidad = 0;
                        AnXArXLo.Id = i;
                        i++;
                        AnaqXArtXLoc.Add(AnXArXLo);
                    }

                    //hasta aqui

                    foreach (AnaquelXArticuloXLocal anaquelXArticuloXLocal in AnaqXArtXLoc)
                    {
                        #region "AnaquelXArticuloXLocal"
                        Revisiones.AnaquelXArticuloXLocalRow filaAnaquelXArticuloXLocal = dsRevision.AnaquelXArticuloXLocal.NewAnaquelXArticuloXLocalRow();

                        filaAnaquelXArticuloXLocal.AnaquelRow = filaAnaquel;
                        Revisiones.ArticuloXLocalRow filaArticuloXLocal = dsRevision.ArticuloXLocal.FindByIdArticuloXLocal(anaquelXArticuloXLocal.ArticuloXLocal.Id);
                        filaAnaquelXArticuloXLocal.ArticuloXLocalRow = filaArticuloXLocal;
                        filaAnaquelXArticuloXLocal.Cantidad = anaquelXArticuloXLocal.Cantidad == null ? 0 : anaquelXArticuloXLocal.Cantidad.Value;
                        filaAnaquelXArticuloXLocal.CodAnaquel = anaquelXArticuloXLocal.CodAnaquel.Id;
                        filaAnaquelXArticuloXLocal.IdAnaquelXArticuloXLocal = anaquelXArticuloXLocal.Id;
                        filaAnaquelXArticuloXLocal.IdArticuloXLocal = (int)filaArticuloXLocal["IdArticuloXLocal"];

                        dsRevision.AnaquelXArticuloXLocal.AddAnaquelXArticuloXLocalRow(filaAnaquelXArticuloXLocal);
                        #endregion
                    }
                    AnaqXArtXLoc = null;
                }
            }
            new frmVistaReporteRevision(dsRevision).ShowDialog(this);
        }