private void btnGuardaCambios_Click(object sender, EventArgs e)
        {
            try
            {
                if (this._idResponsiva == null || this._idUsuarioT == null)
                {
                    throw new Exception("Realice algún movimiento para guardar cambios");
                }

                bool resultado = false;

                if (this._respSelec)
                {
                    // validaciones
                    if (this._countListTraspaso == this._activosT.Count)
                    {
                        throw new Exception("No se han realizado modificaciones");
                    }

                    if (string.IsNullOrEmpty(this.tbMotivo.Text))
                    {
                        throw new Exception("Defina un motivo del traspaso");
                    }

                    if (this.tbMotivo.Text.Trim().Length < 10)
                    {
                        this.label7.ForeColor = System.Drawing.Color.Red;
                        this.label7.Text      = "Motivo*";
                        throw new Exception("La longitud miníma permitida para el Motivo es de 10 carácteres");
                    }
                    else
                    {
                        this.label7.ForeColor = System.Drawing.Color.Black;
                        this.label7.Text      = "Motivo";
                    }

                    string motivo = this.tbMotivo.Text;

                    // agrega a la responsiva existente los nuevos activos
                    // y cambia el estatus a los anteriores
                    // y las areas de los activos
                    resultado = this._responsivasNegocio.traspasoRespExist(this._activos, this._idUsuarioT, this._idUsuario, motivo,
                                                                           this._activosT.Where(w => !string.IsNullOrEmpty(w.accion)).ToList(),
                                                                           this._idResponsivaT, this._idResponsiva);

                    if (resultado)
                    {
                        string idActivos = string.Join(",", this._activosT.Where(w => !string.IsNullOrEmpty(w.accion)).Select(s => s.idActivo).ToList());

                        // bitacora
                        this._catalogosNegocio.generaBitacora(
                            "Traspaso realizado de la responsiva " + this._idResponsiva + "a la responsiva " + this._idResponsivaT +
                            " los activos " + idActivos + " por el motivo '" + motivo + "'", "ACTIVOS");
                    }
                }
                else if (this._nuevaResp)
                {
                    if (this._activosT.Count == 0)
                    {
                        throw new Exception("Agregue al menos un activo a la lista");
                    }

                    string responsable = this.tbResponsableT.Text;
                    string sucursal    = this.tbSucursalT.Text;
                    string puesto      = this.tbPuestoT.Text;

                    if (string.IsNullOrEmpty(this.tbMotivo.Text))
                    {
                        throw new Exception("Defina un motivo del traspaso");
                    }

                    string motivo = this.tbMotivo.Text;

                    // abre formulario para la creacion de la nueva responsiva
                    frmNuevaResponsiva form = new frmNuevaResponsiva(this._activosT, responsable, sucursal, puesto);

                    var result = form.ShowDialog();

                    if (result == System.Windows.Forms.DialogResult.OK)
                    {
                        string observaciones = form.observaciones;

                        // crea nueva responsiva
                        // y cambia el estatus a los anteriores
                        resultado = this._responsivasNegocio.traspasoCreaResp(this._activos, this._idUsuario, motivo,
                                                                              this._activosT.Where(w => !string.IsNullOrEmpty(w.accion)).ToList(),
                                                                              this._idResponsiva, observaciones, this._idUsuarioT, Modelos.Login.idUsuario);

                        if (resultado)
                        {
                            string idActivos = string.Join(",", this._activosT.Where(w => !string.IsNullOrEmpty(w.accion)).Select(s => s.idActivo).ToList());

                            // bitacora
                            this._catalogosNegocio.generaBitacora(
                                "Traspaso realizado de la responsiva " + this._idResponsiva + "a una nueva responsiva los activos " + idActivos + " por el motivo '" + motivo + "'", "ACTIVOS");
                        }
                    }
                    else
                    {
                        return;
                    }
                }

                if (resultado)
                {
                    MessageBox.Show("Cambios guardados correctamente", "Responsivas", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    // abrir formulario
                    frmReporteTraspasos form = new frmReporteTraspasos();

                    List <Modelos.Activos> activos = this._activosT.Where(w => !string.IsNullOrEmpty(w.accion)).ToList();

                    form._empresa         = Modelos.Login.empresa;
                    form._logo            = this._responsivasNegocio.obtieneLogo("reportes");
                    form._activos         = activos;
                    form._detalle         = this.tbMotivo.Text;
                    form._personaAnterior = this.tbResponsable.Text;
                    form._personaNueva    = this.tbResponsableT.Text;
                    form._fecha           = this._catalogosNegocio.getFechaServidor();

                    form.ShowDialog();

                    string idActivos = string.Join(",", this._activosT.Where(w => !string.IsNullOrEmpty(w.accion)).Select(s => s.idActivo).ToList());

                    // bitacora
                    this._catalogosNegocio.generaBitacora(
                        "Se genero la vista previa del informe de Traspaso, ACTIVOS: " + idActivos, "ACTIVOS");

                    this.limpia();
                }
                else
                {
                    throw new Exception("Problemas al guardar cambios");
                }
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message, "Responsivas", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
        private void btnVistaPrevia_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.gridView1.RowCount == 0)
                {
                    return;
                }

                List <Modelos.Activos> activosImpre = new List <Modelos.Activos>();

                List <Modelos.Traspasos> traspasos =
                    ((List <Modelos.Traspasos>) this.gridView1.DataSource)
                    .Where(w => w.seleccionado == true)
                    .Select(s => s)
                    .ToList();

                string motivo     = string.Empty;
                string personaAnt = string.Empty;
                string personaNva = string.Empty;
                string fecha      = string.Empty;

                if (traspasos.Count > 0)
                {
                    // si se selecciono por casilla de verificacion los traspasos
                    foreach (Modelos.Traspasos tr in traspasos)
                    {
                        if (!string.IsNullOrEmpty(personaNva))
                        {
                            if (!personaNva.Equals(tr.personaNuevo) || !personaAnt.Equals(tr.personaAnt) || !motivo.Equals(tr.motivo))
                            {
                                throw new Exception("Las personas ni el motivo corresponden entre los traspasos seleccionados");
                            }
                        }

                        personaAnt = tr.personaAnt;
                        personaNva = tr.personaNuevo;
                        motivo     = tr.motivo;
                        fecha      = tr.fecha;

                        activosImpre.AddRange(this._activosNegocio.getActivosTras(tr.fecha, tr.consecTraspaso));
                    }
                }
                else
                {
                    if (this._traspasoSel == null)
                    {
                        throw new Exception("Seleccione un Traspaso");
                    }

                    // si solo se dio doble clin en un traspaso
                    activosImpre = this._activosNegocio.getActivosTras(this._traspasoSel.fecha, this._traspasoSel.consecTraspaso);

                    personaAnt = this._traspasoSel.personaAnt;
                    personaNva = this._traspasoSel.personaNuevo;
                    motivo     = this._traspasoSel.motivo;
                    fecha      = this._traspasoSel.fecha;
                }

                // abrir formulario
                frmReporteTraspasos form = new frmReporteTraspasos();

                form._empresa         = Modelos.Login.empresa;
                form._logo            = this._responsivasNegocio.obtieneLogo("reportes");
                form._activos         = activosImpre;
                form._detalle         = motivo;
                form._personaAnterior = personaAnt;
                form._personaNueva    = personaNva;
                form._fecha           = fecha;

                form.ShowDialog();

                string idActivos = string.Join(",", activosImpre.Select(s => s.idActivo).ToList());

                // bitacora
                this._catalogosNegocio.generaBitacora(
                    "Se genero la vista previa del informe de Traspaso, ACTIVOS: " + idActivos, "CONSULTAS");
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message, "Traspasos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }