Esempio n. 1
0
        protected override Colosoft.Reports.IReportDocument LoadReport(ref LocalReport report, ref List <ReportParameter> lstParam,
                                                                       HttpRequest PageRequest, System.Collections.Specialized.NameValueCollection Request, object[] outrosParametros, LoginUsuario login, string diretorioLogotipos)
        {
            // Verifica qual relatório será chamado
            switch (Request["rel"])
            {
            case "GraficoProducaoPerdaDiaria":

                report.ReportPath = (Request["tipoGrafico"] == "1") ?
                                    "Relatorios/Producao/rptGraficoProdPerdaDiaria.rdlc" : "Relatorios/Producao/rptGraficoProdPerdaProduto.rdlc";

                RecebimentoImagem imgGrafico;

                if (Request["tipoGrafico"] == "1")
                {
                    imgGrafico        = new RecebimentoImagem();
                    imgGrafico.Buffer = Glass.Conversoes.DecodificaPara64(Request["grfProdAcumulada"]);
                    report.DataSources.Add(new ReportDataSource("grafProdAcumulada", new RecebimentoImagem[1] {
                        imgGrafico
                    }));

                    imgGrafico        = new RecebimentoImagem();
                    imgGrafico.Buffer = Glass.Conversoes.DecodificaPara64(Request["grfIndicePerda"]);
                    report.DataSources.Add(new ReportDataSource("grafIndicePerda", new RecebimentoImagem[1] {
                        imgGrafico
                    }));

                    imgGrafico        = new RecebimentoImagem();
                    imgGrafico.Buffer = Glass.Conversoes.DecodificaPara64(Request["grfProdDiaria"]);
                    report.DataSources.Add(new ReportDataSource("grafProdDiaria", new RecebimentoImagem[1] {
                        imgGrafico
                    }));

                    imgGrafico        = new RecebimentoImagem();
                    imgGrafico.Buffer = Glass.Conversoes.DecodificaPara64(Request["grfPerdaMensal"]);
                    report.DataSources.Add(new ReportDataSource("grafPerdaMensal", new RecebimentoImagem[1] {
                        imgGrafico
                    }));

                    imgGrafico        = new RecebimentoImagem();
                    imgGrafico.Buffer = Glass.Conversoes.DecodificaPara64(Request["grfPerdaSetores"]);
                    report.DataSources.Add(new ReportDataSource("grafPerdaSetores", new RecebimentoImagem[1] {
                        imgGrafico
                    }));
                }
                else if (Request["tipoGrafico"] == "2")
                {
                    imgGrafico        = new RecebimentoImagem();
                    imgGrafico.Buffer = Glass.Conversoes.DecodificaPara64(Request["grf10mm"]);
                    report.DataSources.Add(new ReportDataSource("graf10mm", new RecebimentoImagem[1] {
                        imgGrafico
                    }));

                    imgGrafico        = new RecebimentoImagem();
                    imgGrafico.Buffer = Glass.Conversoes.DecodificaPara64(Request["grf8mm"]);
                    report.DataSources.Add(new ReportDataSource("graf8mm", new RecebimentoImagem[1] {
                        imgGrafico
                    }));

                    imgGrafico        = new RecebimentoImagem();
                    imgGrafico.Buffer = Glass.Conversoes.DecodificaPara64(Request["grf6mm"]);
                    report.DataSources.Add(new ReportDataSource("graf6mm", new RecebimentoImagem[1] {
                        imgGrafico
                    }));

                    report.DataSources.Add(new ReportDataSource("GraficoProdPerdaDiaria",
                                                                GraficoProdPerdaDiariaDAO.Instance.GetPerdaProduto(Convert.ToInt32(Request["setor"]),
                                                                                                                   Request["incluirTrocaDevolucao"] != null && Request["incluirTrocaDevolucao"].ToLower() == "true", Request["mes"], Request["ano"])));
                }

                break;

            case "PlanilhaMetragem":
                var agruparPecas = Request["agruparPecas"] == "true";
                report.ReportPath = agruparPecas ? "Relatorios/Producao/rptPlanilhaMetragemAgrupada.rdlc" : "Relatorios/Producao/rptPlanilhaMetragem.rdlc";

                var PlanilhaMetragem_idPedido    = !String.IsNullOrEmpty(Request["idPedido"]) ? Glass.Conversoes.StrParaUint(Request["idPedido"]) : 0;
                var PlanilhaMetragem_idFunc      = !String.IsNullOrEmpty(Request["idFunc"]) ? Glass.Conversoes.StrParaUint(Request["idFunc"]) : 0;
                var PlanilhaMetragem_idCliente   = !String.IsNullOrEmpty(Request["idCliente"]) ? Glass.Conversoes.StrParaUint(Request["idCliente"]) : 0;
                var PlanilhaMetragem_idImpressao = !String.IsNullOrEmpty(Request["idImpressao"]) ? Glass.Conversoes.StrParaUint(Request["idImpressao"]) : 0;

                report.DataSources.Add(new ReportDataSource("Metragem", MetragemDAO.Instance.GetForRpt(PlanilhaMetragem_idPedido,
                                                                                                       PlanilhaMetragem_idImpressao, PlanilhaMetragem_idFunc, Request["codCliente"], PlanilhaMetragem_idCliente, Request["nomeCliente"],
                                                                                                       Request["dataIni"], Request["dataFim"], Request["dataIniEnt"], Request["dataFimEnt"],
                                                                                                       Glass.Conversoes.StrParaInt(Request["situacao"]), Glass.Conversoes.StrParaUint(Request["idSetor"]), Request["setoresPosteriores"] == "true",
                                                                                                       Request["idsRotas"], Glass.Conversoes.StrParaUint(Request["idTurno"]))));
                break;

            case "ProducaoForno":
                report.ReportPath = "Relatorios/Producao/rptProducaoForno.rdlc";
                report.DataSources.Add(new ReportDataSource("ProducaoForno", ProducaoFornoDAO.Instance.GetForRpt(Request["dataIni"], Request["dataFim"])));
                break;

            case "ProducaoSituacao":
                report.ReportPath = "Relatorios/Producao/rptProducaoSituacao.rdlc";
                uint ProducaoSituacao_idFunc   = Glass.Conversoes.StrParaUint(Request["idFunc"]);
                uint ProducaoSituacao_idPedido = !String.IsNullOrEmpty(Request["idPedido"]) ? Glass.Conversoes.StrParaUint(Request["idPedido"]) : 0;
                report.DataSources.Add(new ReportDataSource("ProducaoSituacao", ProducaoSituacaoDAO.Instance.GetForRpt(ProducaoSituacao_idFunc, ProducaoSituacao_idPedido, Request["dataIni"], Request["dataFim"])));
                lstParam.Add(new ReportParameter("LiberarPedido", PedidoConfig.LiberarPedido.ToString()));
                lstParam.Add(new ReportParameter("Agrupar", !String.IsNullOrEmpty(Request["agrupar"]) ? (Request["agrupar"].ToLower() == "true").ToString() : "false"));
                break;

            case "ProducaoSituacaoData":
                report.ReportPath = "Relatorios/Producao/rptProducaoSituacaoData.rdlc";
                uint ProducaoSituacaoData_idPedido  = !String.IsNullOrEmpty(Request["idPedido"]) ? Glass.Conversoes.StrParaUint(Request["idPedido"]) : 0;
                uint ProducaoSituacaoData_idCliente = !String.IsNullOrEmpty(Request["idCliente"]) ? Glass.Conversoes.StrParaUint(Request["idCliente"]) : 0;
                report.DataSources.Add(new ReportDataSource("ProducaoSituacaoData", ProducaoSituacaoDataDAO.Instance.GetForRpt(Request["dataIni"], Request["dataFim"], ProducaoSituacaoData_idPedido, ProducaoSituacaoData_idCliente, Request["nomeCliente"])));
                lstParam.Add(new ReportParameter("LiberarPedido", PedidoConfig.LiberarPedido.ToString()));
                lstParam.Add(new ReportParameter("ExportarExcel", (Request["exportarExcel"] == "true").ToString().ToLower()));
                break;

            case "ProducaoFornoResumo":
                report.ReportPath = "Relatorios/Producao/rptProducaoFornoResumo.rdlc";
                report.DataSources.Add(new ReportDataSource("ProducaoFornoResumo", ProducaoFornoResumoDAO.Instance.GetForRpt(Glass.Conversoes.StrParaInt(Request["setor"]),
                                                                                                                             DateTime.Parse(Request["dtIni"]), DateTime.Parse(Request["dtFim"]), Request["idTurno"].StrParaInt())));
                break;

            case "RelacaoBoxProducao":
                report.ReportPath = "Relatorios/Producao/rptRelacaoBoxProducao.rdlc";
                report.DataSources.Add(new ReportDataSource("RelacaoBoxProducao", RelacaoBoxProducaoDAO.Instance.GetForRpt(Request["data"])));
                break;

            case "Perdas":
            {
                report.ReportPath = "Relatorios/Producao/rptPerdas.rdlc";

                var idFuncPerda = !string.IsNullOrEmpty(Request["idFuncPerda"]) ? Request["idFuncPerda"].StrParaUint() : 0;
                var idPedido    = !string.IsNullOrEmpty(Request["idPedido"]) ? Request["idPedido"].StrParaUint() : 0;
                var idCliente   = !string.IsNullOrEmpty(Request["idCliente"]) ? Request["idCliente"].StrParaUint() : 0;

                lstParam.Add(new ReportParameter("Agrupar", Request["agrupar"].StrParaInt().ToString()));

                report.DataSources.Add(new ReportDataSource("ProdutoPedidoProducao", ProdutoPedidoProducaoDAO.Instance.GetForRptPerda(idFuncPerda, idPedido, idCliente, Request["nomeCliente"],
                                                                                                                                      Request["dataIni"], Request["dataFim"], Request["idsSetor"])));
                break;
            }

            case "PerdasRepos":
            {
                report.ReportPath = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Producao/rptPerdasRepos{0}.rdlc");

                var idFuncPerda = !string.IsNullOrEmpty(Request["idFuncPerda"]) ? Request["idFuncPerda"].StrParaUint() : 0;
                var idLoja      = !string.IsNullOrEmpty(Request["idLoja"]) ? Request["idLoja"].StrParaUint() : 0;
                var idPedido    = !string.IsNullOrEmpty(Request["idPedido"]) ? Request["idPedido"].StrParaUint() : 0;
                var idCliente   = !string.IsNullOrEmpty(Request["idCliente"]) ? Request["idCliente"].StrParaUint() : 0;

                lstParam.Add(new ReportParameter("ExibirValorCustoVenda", PCPConfig.ExibirCustoVendaRelatoriosProducao.ToString()));

                report.DataSources.Add(new ReportDataSource("ProdutoPedidoProducao",
                                                            ProdutoPedidoProducaoDAO.Instance.GetForRptPerdaReposPeca(idFuncPerda, idPedido, idLoja, idCliente,
                                                                                                                      Request["nomeCliente"], Request["codInterno"], Request["descrProd"], Request["dataIni"], Request["dataFim"],
                                                                                                                      Request["idSetor"], Glass.Conversoes.StrParaUint(Request["turno"]), Request["idTipoPerda"],
                                                                                                                      Glass.Conversoes.StrParaInt(Request["idCorVidro"]), Glass.Conversoes.StrParaFloat(Request["espessura"]), Glass.Conversoes.StrParaUint(Request["numeroNFe"]))));
                break;
            }

            case "ProducaoContagem":
            {
                #region Declaração de variáveis

                report.ReportPath = "Relatorios/Producao/rptProducaoContagem.rdlc";
                var aguardandoEntradaEstoque = Request["aguardEntrEstoque"] == "true";
                var aguardandoExpedicao      = Request["aguardExpedicao"] == "true";
                var altura                      = Request["altura"].StrParaInt();
                var codigoEtiqueta              = Request["numEtiqueta"];
                var codigoPedidoCliente         = Request["codCliente"];
                var dataConfirmacaoPedidoFim    = Request["dataFimConfPed"].StrParaDate();
                var dataConfirmacaoPedidoInicio = Request["dataIniConfPed"].StrParaDate();
                var dataEntregaFim              = Request["dataFimEnt"].StrParaDate();
                var dataEntregaInicio           = Request["dataIniEnt"].StrParaDate();
                var dataFabricaFim              = Request["dataFimFabr"].StrParaDate();
                var dataFabricaInicio           = Request["dataIniFabr"].StrParaDate();
                var dataLeituraFim              = Request["dataFim"].StrParaDate();
                var dataLeituraInicio           = Request["dataIni"].StrParaDate();
                var espessura                   = Request["espessura"].StrParaInt();
                var fastDelivery                = Request["fastDelivery"].StrParaInt();
                var idCarregamento              = Request["idCarregamento"].StrParaInt();
                var idCliente                   = Request["idCliente"].StrParaInt();
                var idFuncionario               = Request["idFunc"].StrParaInt();
                var idImpressao                 = Request["idImpressao"].StrParaInt();
                var idPedido                    = Request["idPedido"].StrParaInt();
                var idsAplicacao                = Request["idsApl"]?.Split(',')?.Select(f => f.StrParaInt()) ?? new List <int>();
                var idSetor                     = Request["idSetor"].StrParaInt();
                var idsProcesso                 = Request["idsProc"]?.Split(',')?.Select(f => f.StrParaInt()) ?? new List <int>();
                var idsRota                     = Request["codRota"]?.Split(',')?.Select(f => f.StrParaInt()) ?? new List <int>();
                var idsSubgrupo                 = Request["idsSubgrupos"]?.Split(',')?.Select(f => f.StrParaInt()) ?? new List <int>();
                var largura                     = Request["largura"].StrParaInt();
                var nomeCliente                 = Request["nomeCliente"];
                var pecasProducaoCanceladas     = Request["pecasProdCanc"]?.Split(',')?.Select(f => f.StrParaInt()) ?? new List <int>();
                var situacoes                   = Request["situacao"]?.Split(',')?.Select(f => f.StrParaInt()) ?? new List <int>();
                var situacaoPedido              = Request["situacaoPedido"].StrParaInt();
                var tipoEntrega                 = Request["tipoEntrega"].StrParaInt();
                var tipoSituacao                = Request["tiposSituacoes"].StrParaInt();
                var tiposPedido                 = Request["tipoPedido"]?.Split(',')?.Select(f => f.StrParaInt()) ?? new List <int>();

                #endregion

                var producoesContagem = ProducaoContagemDAO.Instance.PesquisarProducaoContagemRelatorio(aguardandoEntradaEstoque, aguardandoExpedicao, altura, codigoEtiqueta,
                                                                                                        codigoPedidoCliente, dataConfirmacaoPedidoFim, dataConfirmacaoPedidoInicio, dataEntregaFim, dataEntregaInicio, dataFabricaFim, dataFabricaInicio, dataLeituraFim,
                                                                                                        dataLeituraInicio, espessura, fastDelivery, idCarregamento, idCliente, idFuncionario, idImpressao, idPedido, idsAplicacao, idSetor, idsProcesso, idsRota, idsSubgrupo,
                                                                                                        largura, nomeCliente, pecasProducaoCanceladas, situacaoPedido, situacoes, tipoEntrega, tipoSituacao, tiposPedido);

                report.DataSources.Add(new ReportDataSource("ProducaoContagem", producoesContagem));
                break;
            }

            case "ProducaoData":
                report.ReportPath = "Relatorios/Producao/rptProducaoData.rdlc";
                report.DataSources.Add(new ReportDataSource("ProducaoData", ProducaoDataDAO.Instance.GetForRpt(Glass.Conversoes.StrParaInt(Request["tipoData"]), Request["dataIni"], Request["dataFim"], Glass.Conversoes.StrParaUint(Request["idProcesso"]),
                                                                                                               Glass.Conversoes.StrParaUint(Request["idAplicacao"]), Request["tipo"], Request["situacao"], Request["naoCortados"] == "true", Request["codInternoMP"], Request["descrMP"])));
                break;

            case "PecasPendentes":
                report.ReportPath = "Relatorios/Producao/rptPecasPendentes.rdlc";

                var  dtIni            = Request["dataIni"].ConverteData().GetValueOrDefault(DateTime.Now);
                var  dtFim            = Request["dataFim"].ConverteData().GetValueOrDefault(DateTime.Now);
                bool usarProximoSetor = false;
                bool.TryParse(Request["usarProximoSetor"], out usarProximoSetor);

                // Recupera a relação da peças pendentes
                var lstPcaPend = PecasPendentesDAO.Instance.GetListForRpt
                                     (Request["tipoPeriodo"], usarProximoSetor, dtIni, dtFim);

                string descricaoPeriodo = null;

                switch (Request["tipoPeriodo"])
                {
                case "PeriodoEntrega":
                    descricaoPeriodo = "Período (Entrega)";
                    break;

                case "PeriodoFabrica":
                    descricaoPeriodo = "Período (Fábrica)";
                    break;
                }
                lstParam.Add(new ReportParameter("UsarProximoSetor", usarProximoSetor ? "Próximo Setor a ser efetuado a peça" : ""));
                lstParam.Add(new ReportParameter("Periodo", descricaoPeriodo + " de " + Request["dataIni"] + " à " + Request["dataFim"]));
                report.DataSources.Add(new ReportDataSource("PecasPendentes", lstPcaPend));
                break;

            case "ProducaoDiaria":
                report.ReportPath = "Relatorios/Producao/rptProducaoDiaria.rdlc";
                lstParam.Add(new ReportParameter("Data", Request["data"]));
                var dados = WebGlass.Business.ProducaoDiariaRealizada.Fluxo.BuscarEValidar.Instance.ObtemDadosProducao(DateTime.Parse(Request["data"]));
                if (dados.Count > 0)
                {
                    dados[0].AlteraImagemGrafico(Request["imagem"]);
                }
                report.DataSources.Add(new ReportDataSource("ProducaoDiariaRealizada", dados));
                break;

            case "CapacidadeProducaoPedido":
                report.ReportPath = "Relatorios/Producao/rptPedidosCapacidadeProducao.rdlc";
                report.DataSources.Add(new ReportDataSource("CapacidadeProducaoPedido", CapacidadeProducaoPedidoDAO.Instance.ObtemRelatorioPedidosCapacidadeProducao(
                                                                Request["data"].StrParaDate().GetValueOrDefault(), Request["horaInicial"], Request["horaFinal"], Request["idSetor"].StrParaUint())));
                break;

            case "RoteiroProducao":
                report.ReportPath = "Relatorios/Producao/rptRoteiroProducao.rdlc";
                report.DataSources.Add(new ReportDataSource("RoteiroProducao", RoteiroProducaoDAO.Instance.ObtemParaRelatorio(0,
                                                                                                                              Glass.Conversoes.StrParaUint(Request["grupoProd"]), Glass.Conversoes.StrParaUint(Request["subgrupoProd"]), Glass.Conversoes.StrParaUint(Request["processo"]))));
                break;

            default:
                Response.Write("Nenhum relatório especificado.");
                return(null);
            }

            // Atribui parâmetros ao relatório
            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(PageRequest)));
            lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome)));
            lstParam.Add(new ReportParameter("CorRodape", "DimGray"));

            return(null);
        }
Esempio n. 2
0
        protected override Colosoft.Reports.IReportDocument LoadReport(ref LocalReport report, ref List <ReportParameter> lstParam,
                                                                       HttpRequest PageRequest, System.Collections.Specialized.NameValueCollection Request, object[] outrosParametros, LoginUsuario login, string diretorioLogotipos)
        {
            // Verifica qual relatório será chamado
            switch (Request["rel"])
            {
            case "LucroAproximado":
                report.ReportPath = "Relatorios/Administrativos/rptLucroAproximado.rdlc";
                var lucro = LucroAproximadoDAO.Instance.GetLucroAproximado(Request["dataIni"], Request["dataFim"]);
                report.DataSources.Add(new ReportDataSource("LucroAproximado", lucro));
                break;

            case "RecebimentosTipo":
            {
                report.ReportPath = "Relatorios/Administrativos/rptRecebimentosTipo.rdlc";
                var lstReceb = RecebimentoDAO.Instance.GetRecebimentosTipo(Request["dataIni"], Request["dataFim"], Glass.Conversoes.StrParaUint(Request["idLoja"]), 0);
                report.DataSources.Add(new ReportDataSource("Recebimento", lstReceb));
                break;
            }

            case "RecebimentosTipoGrafico":
                report.ReportPath = "Relatorios/Administrativos/rptRecebimentosTipoGrafico.rdlc";
                var rt = RecebimentoDAO.Instance.GetRecebimentosTipo(Request["dataIni"], Request["dataFim"], Glass.Conversoes.StrParaUint(Request["idLoja"]), Glass.Conversoes.StrParaUint(Request["idFunc"]));
                report.DataSources.Add(new ReportDataSource("Recebimento", rt));

                var recebimentoImagem = new RecebimentoImagem();
                recebimentoImagem.Buffer = Glass.Conversoes.DecodificaPara64(Request["tempFile"]);
                report.DataSources.Add(new ReportDataSource("RecebimentoImagem", new RecebimentoImagem[1] {
                    recebimentoImagem
                }));
                break;

            case "GraficoVendas":
                report.ReportPath = "Relatorios/Administrativos/rptGraficoVendas.rdlc";

                var criterio          = string.Empty;
                var chartVendasLista  = new List <ChartVendas>();
                var chartVendasImagem = new ChartVendasImagem();
                var chartVendasDict   = ChartVendasDAO.Instance.GetForRpt(Request["idLoja"].StrParaUint(), Request["idVendedor"].StrParaUint(), Request["tipoFunc"].StrParaInt(),
                                                                          Request["idCliente"].StrParaUint(), Request["nomeCliente"], Request["tipoPedido"], Request["idRota"].StrParaUint(), Request["dataIni"], Request["dataFim"],
                                                                          Request["agrupar"].StrParaInt(), out criterio);

                foreach (var entry in chartVendasDict)
                {
                    foreach (var c in entry.Value)
                    {
                        chartVendasLista.Add(c);
                    }
                }

                chartVendasImagem.Buffer = Glass.Conversoes.DecodificaPara64(Request["tempFile"]);

                lstParam.Add(new ReportParameter("Criterio", criterio));

                report.DataSources.Add(new ReportDataSource("ChartVendas", chartVendasLista.ToArray()));
                report.DataSources.Add(new ReportDataSource("ChartVendasImagem", new ChartVendasImagem[1] {
                    chartVendasImagem
                }));

                break;

            case "GraficoOrcaVendas":
            {
                report.ReportPath = "Relatorios/Administrativos/rptGraficoOrcaVendas.rdlc";
                var situacao        = !string.IsNullOrEmpty(Request["situacao"]) ? Request["situacao"].Split(',').Select(f => f.StrParaInt()) : null;
                var chartOrcaVendas = ChartOrcaVendasDAO.Instance.GetOrcaVendas(Glass.Conversoes.StrParaUint(Request["idLoja"]),
                                                                                Glass.Conversoes.StrParaUint(Request["idVendedor"]), situacao, Glass.Conversoes.StrParaInt(Request["tipoFunc"]), Request["dataIni"], Request["dataFim"]);
                report.DataSources.Add(new ReportDataSource("ChartOrcaVendas", chartOrcaVendas));
                var chartOrcaVendasImagem = new ChartOrcaVendasImagem();
                chartOrcaVendasImagem.Buffer = Glass.Conversoes.DecodificaPara64(Request["tempFile"]);
                report.DataSources.Add(new ReportDataSource("ChartOrcaVendasImagem", new ChartOrcaVendasImagem[1] {
                        chartOrcaVendasImagem
                    }));
                break;
            }

            case "GraficoOrcamentos":
            {
                var idLoja     = Request["idLoja"].StrParaUint();
                var idVendedor = string.IsNullOrEmpty(Request["idVendedor"])
                        ? 0
                        : Request["idVendedor"].StrParaUint();
                var agrupar = string.IsNullOrEmpty(Request["agrupar"])
                        ? 0
                        : Request["agrupar"].StrParaInt();
                var situacao = string.IsNullOrEmpty(Request["situacao"])
                        ? 0
                        : Request["situacao"].StrParaInt();

                report.ReportPath = "Relatorios/Administrativos/rptGraficoOrcamento.rdlc";
                var v = GraficoOrcamentosDAO.Instance.GetOrcamentos(idLoja, idVendedor, new int[] { situacao }, Request["dtIni"],
                                                                    Request["dtFim"], agrupar, false);
                report.DataSources.Add(new ReportDataSource("GraficoOrcamentos", v));

                var graficoOrcamentosImagem = new GraficoOrcamentosImagem
                {
                    Buffer = Glass.Conversoes.DecodificaPara64(Request["tempFile"])
                };
                report.DataSources.Add(new ReportDataSource("GraficoOrcamentosImagem",
                                                            new GraficoOrcamentosImagem[1] {
                        graficoOrcamentosImagem
                    }));
                break;
            }

            case "GraficoProdutos":
            {
                var idLoja      = Request["idLoja"].StrParaUint();
                var idVendedor  = string.IsNullOrEmpty(Request["idVend"]) ? 0 : Request["idVend"].StrParaUint();
                var idCliente   = string.IsNullOrEmpty(Request["idCliente"]) ? 0 : Request["idCliente"].StrParaInt();
                var nomeCliente = Request["nomeCliente"];
                var grupo       = !string.IsNullOrEmpty(Request["grupo"]) ? Request["grupo"].StrParaUint() : 0;
                var subGrupo    = !string.IsNullOrEmpty(Request["subGrupo"])
                        ? Request["subGrupo"].StrParaUint()
                        : 0;
                var quantidade = !string.IsNullOrEmpty(Request["quantidade"])
                        ? Request["quantidade"].StrParaInt()
                        : 0;
                var tipo             = !string.IsNullOrEmpty(Request["tipo"]) ? Request["tipo"].StrParaInt() : 0;
                var dataIni          = Request["dtIni"];
                var dataFim          = Request["dtFim"];
                var codProduto       = Request["codProduto"];
                var descricaoProduto = Request["descProduto"];
                var apenasMS         = Convert.ToBoolean(Request["apenasMS"]);

                report.ReportPath = "Relatorios/Administrativos/rptGraficoProduto.rdlc";

                //Busca os dados que servirão para preencher as séries do gráfico
                var p = GraficoProdutosDAO.Instance.GetMaisVendidos(idLoja, idVendedor, idCliente, nomeCliente,
                                                                    grupo, subGrupo, quantidade,
                                                                    tipo, dataIni, dataFim, codProduto, descricaoProduto, apenasMS);
                report.DataSources.Add(new ReportDataSource("GraficoProdutos", p));

                var graficoProdutosImagem = new GraficoProdutosImagem();
                graficoProdutosImagem.Buffer = Glass.Conversoes.DecodificaPara64(Request["tempFile"]);
                report.DataSources.Add(new ReportDataSource("GraficoProdutosImagem",
                                                            new GraficoProdutosImagem[1] {
                        graficoProdutosImagem
                    }));

                break;
            }

            case "ListaBenef":
                report.ReportPath = "Relatorios/Administrativos/rptBeneficiamentos.rdlc";
                uint Benef_IdFunc = Glass.Conversoes.StrParaUint(Request["idFunc"]);
                var  lstBenef     = BenefConfigDAO.Instance.GetForRpt(Request["dataIni"], Request["dataFim"],
                                                                      Glass.Conversoes.StrParaUint(Request["idLoja"]), Glass.Conversoes.StrParaUint(Request["idFunc"]));
                if (lstBenef.Count > 0)
                {
                    lstBenef[0].Criterio = "Loja: " + LojaDAO.Instance.GetNome(Glass.Conversoes.StrParaUint(Request["idLoja"])) + "    ";
                    if (Benef_IdFunc > 0)
                    {
                        lstBenef[0].Criterio += "Vendedor: " + FuncionarioDAO.Instance.GetNome(Benef_IdFunc) + "    ";
                    }
                    lstBenef[0].Criterio += "Data início: " + Request["dataIni"] + "    ";
                    lstBenef[0].Criterio += "Data fim: " + Request["dataFim"];
                }
                report.DataSources.Add(new ReportDataSource("BenefConfig", lstBenef));
                break;

            case "FluxoCaixa":
                report.ReportPath = "Relatorios/Administrativos/rptFluxoCaixa.rdlc";
                var lstFluxoCaixa = FluxoCaixaDAO.Instance.GetForRpt(Request["dataIni"], Request["dataFim"], Request["prevCustoFixo"] == "1", Request["tipoConta"]);
                report.DataSources.Add(new ReportDataSource("FluxoCaixa", lstFluxoCaixa));
                break;

            case "FluxoCaixaSintetico":
                report.ReportPath = "Relatorios/Administrativos/rptFluxoCaixaSintetico.rdlc";
                var lstFluxoCaixaSintetico = FluxoCaixaSinteticoDAO.Instance.GetForRpt(Request["dataIni"], Request["dataFim"], Request["prevCustoFixo"] == "1", Request["tipoConta"]);
                report.DataSources.Add(new ReportDataSource("FluxoCaixaSintetico", lstFluxoCaixaSintetico));
                break;

            case "PrevisaoFinanceira":
                report.ReportPath = "Relatorios/Administrativos/rptPrevisaoFinanceira.rdlc";
                report.DataSources.Add(new ReportDataSource("PrevisaoFinanceira_Receber", new Data.RelModel.PrevisaoFinanceira[] {
                    PrevisaoFinanceiraDAO.Instance.GetReceber(Glass.Conversoes.StrParaUint(Request["idLoja"]), Request["data"], Request["prevPedidos"] == "true")
                }));
                report.DataSources.Add(new ReportDataSource("PrevisaoFinanceira_Pagar", new Data.RelModel.PrevisaoFinanceira[] {
                    PrevisaoFinanceiraDAO.Instance.GetPagar(Glass.Conversoes.StrParaUint(Request["idLoja"]), Request["data"], Request["previsaoCustoFixo"] == "true")
                }));
                lstParam.Add(new ReportParameter("Tipo", Request["tipo"]));
                lstParam.Add(new ReportParameter("ExibirPrevisaoCustoFixo", Request["previsaoCustoFixo"]));
                lstParam.Add(new ReportParameter("prevPedidos", (Request["prevPedidos"] == "true").ToString()));
                break;

            case "DescParc":
                report.ReportPath = "Relatorios/Administrativos/rptDescParc.rdlc";

                var contasRec = Glass.Data.DAL.ContasReceberDAO.Instance.GetListContaComDescontoRpt(Glass.Conversoes.StrParaUint(Request["idPedido"]),
                                                                                                    Glass.Conversoes.StrParaUint(Request["idLiberarPedido"]), Glass.Conversoes.StrParaUint(Request["idLoja"]), Glass.Conversoes.StrParaUint(Request["idCliente"]), Request["nomeCli"], Glass.Conversoes.StrParaUint(Request["idFunc"]),
                                                                                                    Glass.Conversoes.StrParaDecimal(Request["valorIniAcres"]), Glass.Conversoes.StrParaDecimal(Request["valorFimAcres"]), Glass.Conversoes.StrParaDecimal(Request["valorIniDesc"]),
                                                                                                    Glass.Conversoes.StrParaDecimal(Request["valorFimDesc"]), Request["dataIni"], Request["dataFim"], Request["dataDescIni"], Request["dataDescFim"], Glass.Conversoes.StrParaUint(Request["idOrigemDesconto"]));

                report.DataSources.Add(new ReportDataSource("ContasReceber", contasRec));
                lstParam.Add(new ReportParameter("LiberarPedido", PedidoConfig.LiberarPedido.ToString()));
                break;

            case "DescParcPag":
                report.ReportPath = "Relatorios/Administrativos/rptDescParcPag.rdlc";
                report.DataSources.Add(new ReportDataSource("ContasPagar", Glass.Data.DAL.ContasPagarDAO.Instance.GetListContaComDescontoRpt(Glass.Conversoes.StrParaUint(Request["idCompra"]),
                                                                                                                                             Glass.Conversoes.StrParaUint(Request["numeroNf"]), Request["dataIni"], Request["dataFim"], Request["dataDescIni"], Request["dataDescFim"])));
                break;

            case "RelacaoVendas":
                report.ReportPath = "Relatorios/Administrativos/rptRelacaoVendas.rdlc";
                report.DataSources.Add(new ReportDataSource("RelacaoVendas", RelacaoVendasDAO.Instance.GetForRpt(Request["dataIni"], Request["dataFim"],
                                                                                                                 Glass.Conversoes.StrParaInt(Request["situacao"]), Glass.Conversoes.StrParaInt(Request["agrupar"]), Glass.Conversoes.StrParaInt(Request["ordenar"]), login)));
                break;

            case "MovimentacoesFinanceiras":
                bool MovimentacoesFinanceiras_detalhado = bool.Parse(Request["detalhado"]);
                report.ReportPath = "Relatorios/Administrativos/rptMovimentacoesFinanceiras" + (MovimentacoesFinanceiras_detalhado ? "Det" : "") + ".rdlc";
                report.DataSources.Add(new ReportDataSource("MovimentacoesFinanceiras", MovimentacoesFinanceirasDAO.Instance.GetForRpt(Request["dataIni"], Request["dataFim"], MovimentacoesFinanceiras_detalhado)));
                break;

            case "IFD":
                report.ReportPath = "Relatorios/Administrativos/rptIFD.rdlc";
                lstParam.Add(new ReportParameter("Data", Request["data"]));
                report.DataSources.Add(new ReportDataSource("MovimentacoesFinanceiras", MovimentacoesFinanceirasDAO.Instance.GetForRpt(Request["data"], Request["data"], false)));
                report.DataSources.Add(new ReportDataSource("PrevisaoFinanceira_Receber", new Data.RelModel.PrevisaoFinanceira[] { PrevisaoFinanceiraDAO.Instance.GetReceber(0, Request["data"], false) }));
                report.DataSources.Add(new ReportDataSource("PrevisaoFinanceira_Pagar", new Data.RelModel.PrevisaoFinanceira[] { PrevisaoFinanceiraDAO.Instance.GetPagar(0, Request["data"], false) }));
                report.DataSources.Add(new ReportDataSource("FluxoCaixaIFD", FluxoCaixaIFDDAO.Instance.GetForRpt(Request["data"])));
                report.DataSources.Add(new ReportDataSource("EstoqueIFD", EstoqueIFDDAO.Instance.GetForRpt(Request["data"])));
                report.DataSources.Add(new ReportDataSource("MovimentacaoDiaIFD", MovimentacaoDiaIFDDAO.Instance.GetForRpt(Request["data"])));
                report.DataSources.Add(new ReportDataSource("TitulosIFD", TitulosIFDDAO.Instance.GetForRpt(Request["data"])));
                break;

            case "AlteracoesSistema":
                report.ReportPath = "Relatorios/Administrativos/rptAlteracoesSistema.rdlc";
                report.DataSources.Add(new ReportDataSource("AlteracoesSistema", AlteracoesSistemaDAO.Instance.GetForRpt(Request["tipo"], Request["dataIni"],
                                                                                                                         Request["dataFim"], Request["tabela"].StrParaInt(), Request["campo"], Request["idFunc"].StrParaUint())));
                break;

            case "GraficoDRE":
            {
                uint trocador = 0;

                report.ReportPath = "Relatorios/Administrativos/rptGraficoDRE.rdlc";

                var idCategoriaConta = Request["idCategoriaConta"].StrParaUint();
                var idGrupoConta     = Request["idGrupoConta"].StrParaUint();
                var idsPlanoConta    = (Request["idsPlanoConta"].Split(',')).Select(f => uint.TryParse(f, out trocador)).Select(f => trocador).Where(f => f > 0).ToArray();
                var idLoja           = Request["idLoja"].StrParaInt();
                var dataIni          = Request["dataIni"];
                var dataFim          = Request["dataFim"];
                var grupos           = Request["grupos"];
                var tipoMov          = Request["tipoMov"].StrParaInt();
                var tipoConta        = Request["tipoConta"].StrParaInt();
                var ajustado         = !string.IsNullOrEmpty(Request["ajustado"]) && Request["ajustado"].ToLower() == "true";

                var ids = new List <uint>();

                var lojas = idLoja == 0
                        ? LojaDAO.Instance.GetAll()
                        : new [] { LojaDAO.Instance.GetElementByPrimaryKey(idLoja) };

                foreach (var l in lojas)
                {
                    ids.Add((uint)l.IdLoja);
                }

                var dados = ChartDREDAO.Instance.ObterDados(idCategoriaConta, idGrupoConta, idsPlanoConta, dataIni,
                                                            dataFim, tipoMov, tipoConta, ajustado, ids);

                var data = new List <ChartDRE>();
                foreach (var entry in dados)
                {
                    foreach (var c in entry.Value)
                    {
                        data.Add(c);
                    }
                }

                report.DataSources.Add(new ReportDataSource("ChartDRE", data.ToArray()));

                var chartDREImagem = new ChartDREImagem
                {
                    Buffer = Glass.Conversoes.DecodificaPara64(Request["tempFile"])
                };
                report.DataSources.Add(new ReportDataSource("ChartDREImagem", new ChartDREImagem[1] {
                        chartDREImagem
                    }));

                break;
            }

            case "PrevFinanRecebPedido":
                report.ReportPath = "Relatorios/Administrativos/rptPrevisaoFinanRecebPedidos.rdlc";
                var pedidos = PrevFinanPedidosDAO.Instance.GetPrevFinanPedidosRpt(Glass.Conversoes.StrParaUint(Request["idLoja"]), Request["dataIni"], Request["dataFim"]);
                report.DataSources.Add(new ReportDataSource("PrevFinanPedidos", pedidos));
                break;

            case "ContasPagarReceber":
                report.ReportPath = "Relatorios/Administrativos/rptContasPagarReceber.rdlc";
                var contasPagRec = ContasPagarReceberDAO.Instance.GetContasPagarReceberRpt(Glass.Conversoes.StrParaUint(Request["idCli"]),
                                                                                           Request["nomeCli"], Glass.Conversoes.StrParaUint(Request["idFornec"]), Request["nomeFornec"], Request["dtIni"], Request["dtFim"],
                                                                                           Glass.Conversoes.StrParaFloat(Request["valorIni"]), Glass.Conversoes.StrParaFloat(Request["valorFim"]));
                report.DataSources.Add(new ReportDataSource("ContasPagarReceber", contasPagRec));
                break;

            case "RecebimentosDetalhados":
            {
                report.ReportPath = "Relatorios/Administrativos/rptRecebimentosDetalhados.rdlc";
                var lstReceb = RecebimentoDAO.Instance.GetRecebimentosDetalhados(Request["dataIni"], Request["dataFim"], Glass.Conversoes.StrParaUint(Request["idLoja"]), 0);
                report.DataSources.Add(new ReportDataSource("Recebimento", lstReceb));
                break;
            }

            case "CentroCustosMes":
            {
                report.ReportPath = "Relatorios/Administrativos/rptCentroCustosMes.rdlc";

                var idLojaCentroCustoMes = Glass.Conversoes.StrParaInt(Request["idLoja"]);
                var valorEstoque         = MovEstoqueCentroCustoDAO.Instance.ObtemSaldoEstoque(idLojaCentroCustoMes);

                lstParam.Add(new ReportParameter("Ano", Request["ano"]));
                lstParam.Add(new ReportParameter("ValorEstoque", valorEstoque.ToString()));

                var lstCentroCustos = CentroCustoDAO.Instance.GetForRelCentroCustoMes(idLojaCentroCustoMes, Glass.Conversoes.StrParaInt(Request["ano"]));
                report.DataSources.Add(new ReportDataSource("CentroCustos", lstCentroCustos));
                break;
            }

            case "CentroCustosPlanoContas":
            {
                report.ReportPath = "Relatorios/Administrativos/rptCentroCustosPlanoConta.rdlc";

                var idLojaCentroCustoPlanoConta = Glass.Conversoes.StrParaInt(Request["idLoja"]);
                var valorEstoque = MovEstoqueCentroCustoDAO.Instance.ObtemSaldoEstoque(idLojaCentroCustoPlanoConta);

                lstParam.Add(new ReportParameter("Periodo", Request["dataIni"] + " à " + Request["dataFim"]));
                lstParam.Add(new ReportParameter("ValorEstoque", valorEstoque.ToString()));

                var lstCentroCustos = CentroCustoDAO.Instance.GetForRelCentroCustoPlanoConta(idLojaCentroCustoPlanoConta, Request["dataIni"], Request["dataFim"]);
                report.DataSources.Add(new ReportDataSource("CentroCustos", lstCentroCustos));
                break;
            }

            default:
                Response.Write("Nenhum relatório especificado.");
                return(null);
            }

            // Atribui parâmetros ao relatório
            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(PageRequest)));
            lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome)));
            lstParam.Add(new ReportParameter("CorRodape", "DimGray"));

            return(null);
        }