private PDFInformeRendimentos GerarPDF(HeaderInfoRendEntidade informe, string CD_SISTEMA = null) { dynamic relatorio; if (informe.ANO_CALENDARIO >= InformeRendimentosExtensoes.ANO_CALENDARIO_MODELO_NOVO) { relatorio = new Relatorio.InformeRendimentos2(); relatorio.GerarRelatorio(informe, CD_SISTEMA); } else { relatorio = new Relatorio.InformeRendimentos(); relatorio.GerarRelatorio(informe, CD_SISTEMA); } using (MemoryStream ms = new MemoryStream()) { relatorio.ExportToPdf(ms); // Clona stream pois o método ExportToPdf fecha a atual var pdfStream = new MemoryStream(); pdfStream.Write(ms.ToArray(), 0, ms.ToArray().Length); pdfStream.Position = 0; var filename = $"Informe de Rendimentos - {informe.ANO_CALENDARIO}.pdf"; return(new PDFInformeRendimentos() { FileName = filename, PdfStream = pdfStream }); } }
public static void MontarGrupos(this HeaderInfoRendEntidade informe) { informe.Grupos = new List <InfoRendGrupoEntidade>(); var anoCalendario = informe.ANO_CALENDARIO; var infoRend = anoCalendario >= ANO_CALENDARIO_MODELO_NOVO ? new InfoRendProxy().BuscarPorOidHeaderAno2022(informe.OID_HEADER_INFO_REND) : new InfoRendProxy().BuscarPorOidHeader(informe.OID_HEADER_INFO_REND); infoRend .GroupBy(x => new { x.COD_GRUPO, x.DES_GRUPO }) .ToList() .ForEach(item => { var grupo = new InfoRendGrupoEntidade { COD_GRUPO = item.Key.COD_GRUPO, DES_GRUPO = item.Key.DES_GRUPO, Itens = item.ToList() }; grupo.Itens.ForEach(grupoItem => { if (!string.IsNullOrEmpty(grupoItem.TXT_QUADRO)) { grupoItem.DES_INFO_REND = grupoItem.TXT_QUADRO; } else if (anoCalendario >= ANO_CALENDARIO_MODELO_NOVO) { grupoItem.DES_INFO_REND = DicionariosInfoRendAno2022.Linhas.SingleOrDefault(x => x.Key == grupoItem.COD_LINHA).Value; } else { grupoItem.DES_INFO_REND = DicionariosInfoRend.Linhas.SingleOrDefault(x => x.Key == grupoItem.COD_LINHA).Value; } }); grupo.Itens = grupo.Itens.OrderBy(x => x.COD_LINHA).ToList(); informe.Grupos.Add(grupo); }); informe.Grupos = informe.Grupos.OrderBy(x => x.COD_GRUPO).ToList(); }