Example #1
0
        /// <summary>
        /// Procesa un informe en el sentido de crear, o recrear el documento asociado.
        /// </summary>
        /// <param name="ip">Informe programado</param>
        /// <param name="desdeFecha">Desde fecha</param>
        /// <param name="hastaFecha">Hasta fecha</param>
        /// <param name="periodicidad">Periodicidad</param>
        /// <param name="instalacion">Instalacion</param>
        /// <param name="informe">Informe</param>
        /// <param name="repositorio">repositorio</param>
        /// <param name="ctx">Conector a la base de datos</param>
        public static void ProcesarUnInforme(InformeProgramado ip, DateTime desdeFecha, DateTime hastaFecha, string periodicidad,
                                             Instalacion instalacion, string informe, string repositorio, LainsaSci ctx)
        {
            Documento documento = new Documento();

            if (ip != null)
            {
                documento = ip.Documento;
            }
            else
            {
                ip                     = new InformeProgramado();
                ip.Empresa             = instalacion.Empresa;
                ip.Instalacion         = instalacion;
                ip.Instalacion         = null;
                ip.FechaInicial        = desdeFecha;
                ip.FechaFinal          = hastaFecha;
                ip.ProgramacionInforme = GetProgramacionInforme(informe, periodicidad, ctx);
                ctx.Add(ip);
                documento.Empresa     = instalacion.Empresa;
                documento.Instalacion = instalacion;
                documento.Fecha       = DateTime.Now;
                documento.Comentarios = "Informe generado automáticamente";
                documento.Extension   = "PDF";
                ctx.Add(documento);
                ip.Documento = documento;
                ctx.SaveChanges();
            }
            // en cualquier caso hay que generar el documento y a ello vamos.
            string          directorio      = repositorio;
            string          nombreFichero   = String.Format("{0:000000000}", documento.DocumentoId) + ".PDF";
            string          fichero         = String.Format("{0}\\{1}", directorio, nombreFichero);
            ReportProcessor reportProcessor = new ReportProcessor();
            RenderingResult renderingResult = null;

            switch (informe)
            {
            case "RptResumenEmpresaInstalacion":
                RptResumenEmpresaInstalacion rptR = new RptResumenEmpresaInstalacion(desdeFecha, hastaFecha, instalacion.Empresa.EmpresaId, instalacion.InstalacionId, ctx);
                documento.Nombre = String.Format("Resumen Revisiones {0:dd/MM/yyyy} {1:dd/MM/yyyy} (Programado)", desdeFecha, hastaFecha);
                renderingResult  = reportProcessor.RenderReport("PDF", rptR, null);
                break;

            case "RptFacturableEmpresaInstalacion":
                RptFacturableEmpresaInstalacion rptF = new RptFacturableEmpresaInstalacion(desdeFecha, hastaFecha, instalacion.Empresa.EmpresaId, instalacion.InstalacionId, ctx);
                documento.Nombre = String.Format("Revisiones facturables {0:dd/MM/yyyy} {1:dd/MM/yyyy} (Programado)", desdeFecha, hastaFecha);
                renderingResult  = reportProcessor.RenderReport("PDF", rptF, null);
                break;
            }
            FileStream fs = new FileStream(fichero, FileMode.Create);

            fs.Write(renderingResult.DocumentBytes, 0, renderingResult.DocumentBytes.Length);
            fs.Close();
        }
Example #2
0
        /// <summary>
        /// Elabora todas las programaciones de informe para la  empresa indicada
        /// </summary>
        /// <param name="fechaActual">Fecha de referencia en torno a la cual se definen los periodicos</param>
        /// <param name="informe"> el informe del que se obtienen las programaciones</param>
        /// <param name="empresa"></param>
        /// <param name="repositorio"></param>
        /// <param name="ctx"></param>
        public static void ElaborarInformesProgramados(DateTime fechaActual, string informe, Instalacion instalacion, string repositorio, LainsaSci ctx)
        {
            // primero hay que comprobar que programaciones tiene este informe
            IList <ProgramacionInforme> lpi = GetProgramacionInformes(informe, ctx);

            // Revisamos por cada programación
            foreach (ProgramacionInforme pi in lpi)
            {
                DateTime desdeFecha = DateTime.Now;
                DateTime hastaFecha = DateTime.Now;
                // valoramos de que periodicidad se trata
                // TODO: Hay que incluir las periodicidades (Trimestral y Semestral)
                switch (pi.Periodicidad)
                {
                case "S":     // semanal
                    desdeFecha = GetPrimerDiaSemana(fechaActual);
                    hastaFecha = GetUltimoDiaSemana(fechaActual);
                    break;

                case "M":     // mensual
                    desdeFecha = GetPrimerDiaMes(fechaActual);
                    hastaFecha = GetUltimoDiaMes(fechaActual);
                    break;

                case "T":     // trimestral
                    desdeFecha = GetPrimerDiaTrimestre(fechaActual);
                    hastaFecha = GetUltimoDiaTrimestre(fechaActual);
                    break;

                case "SM":     // semestral
                    desdeFecha = GetPrimerDiaSemestre(fechaActual);
                    hastaFecha = GetUltimoDiaSemestre(fechaActual);
                    break;

                case "A":     // anual
                    desdeFecha = GetPrimerDiaAno(fechaActual);
                    hastaFecha = GetUltimoDiaAno(fechaActual);
                    break;
                }
                // buscamos si ya existe un informe con esas características.
                InformeProgramado ip = GetInformeProgramado(desdeFecha, hastaFecha, pi.Periodicidad, instalacion, pi.Informe, ctx);
                ProcesarUnInforme(ip, desdeFecha, hastaFecha, pi.Periodicidad, instalacion, pi.Informe, repositorio, ctx);
            }
        }