Exemplo n.º 1
0
        private VistaPrevia _GenerarReporte()
        {
            if (txtAnio.Text.Trim() == "" || txtAnio.Text.Trim().Length < 4)
            {
                throw new Exception("No se ha cargado un Año válido de consulta.");
            }

            if (txtCurso.Text.Trim() != "")
            {
                DataRow WCurso = (new Curso())._BuscarCurso(txtCurso.Text, "Codigo");

                if (WCurso == null)
                {
                    throw new Exception("No se ha cargado un Curso válido de consulta.");
                }
            }

            if (txtLegajo.Text.Trim() != "")
            {
                DataTable WLegajo = (new Legajo())._BuscarLegajo(txtLegajo.Text, "Codigo");

                if (WLegajo.Rows.Count == 0)
                {
                    throw new Exception("No se ha cargado un Legajo válido de consulta.");
                }
            }

            /*
             * Recalculamos los datos a imprimir.
             */
            Helper.ActualizarCantidadPersonasHoras("01/06/" + txtAnio.Text, "31/05/" + (int.Parse(txtAnio.Text) + 1));
            Helper.ActualizarHorasRealizadas(txtAnio.Text);

            string WFormula = "{Cronograma.Ano}=" + txtAnio.Text +
                              " AND {Legajo.Renglon} = 1 ";

            if (txtCurso.Text.Trim() != "" && rbPorCurso.Checked)
            {
                WFormula += " AND {Cronograma.Curso} = " + txtCurso.Text + "";
            }

            if (txtLegajo.Text.Trim() != "")
            {
                WFormula += " AND {Legajo.Codigo} = " + txtLegajo.Text + "";
            }

            if (cmbTipo.SelectedIndex == 1 && rbPorCurso.Checked)
            {
                WFormula += " AND {Cronograma.Realizado} >= {Tema.Horas}";
            }

            if (cmbTipo.SelectedIndex == 2 && rbPorCurso.Checked)
            {
                WFormula += " AND {Cronograma.Realizado} < {Tema.Horas}";
            }

            if (cmbSector.SelectedIndex > 0 && txtLegajo.Text.Trim() == "")
            {
                DataRowView r = (DataRowView)cmbSector.SelectedItem;

                if (r != null)
                {
                    WFormula += " And {Legajo.Sector} = " + r["Codigo"];
                }
            }

            VistaPrevia frm = new VistaPrevia();

            ReportDocument rpt = rbPorCurso.Checked ? (ReportDocument) new ReporteInformeHorasRealizadasyProgramadasPorCurso() : new ReporteInformeHorasRealizadasyProgramadasPorLegajo();

            if (rbPorLegajo.Checked)
            {
                double[] Totales = _TraerTotalPersonas();

                rpt.SetParameterValue("TotalPersonas", Totales[0]);
                rpt.SetParameterValue("HorasTotales", Totales[1]);
                rpt.SetParameterValue("RealizadosTotales", Totales[2]);
                rpt.SetParameterValue("Todos", cmbTipo.SelectedIndex == 0);
                rpt.SetParameterValue("SoloCumplidos", cmbTipo.SelectedIndex == 1);
                rpt.SetParameterValue("SoloPendientes", cmbTipo.SelectedIndex == 2);
            }

            frm.CargarReporte(rpt, WFormula);

            return(frm);
        }