Exemplo 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)
        {
            uint idPedido            = Glass.Conversoes.StrParaUint(Request["idPedido"]);
            TipoRelatorioPedido tipo = !String.IsNullOrEmpty(Request["tipo"]) ? (TipoRelatorioPedido)Glass.Conversoes.StrParaInt(Request["tipo"]) : TipoRelatorioPedido.Normal;

            Glass.Data.Model.Pedido pedido     = PedidoDAO.Instance.GetForRpt(idPedido.ToString(), tipo == TipoRelatorioPedido.Pcp)[0];
            ProdutosPedido[]        prodPedido = ProdutosPedidoDAO.Instance.GetForRpt(idPedido, tipo == TipoRelatorioPedido.Pcp, false);
            var             parcPedido         = ParcelasPedidoDAO.Instance.GetForRpt(idPedido);
            PedidoReposicao pedidoRepos        = PedidoReposicaoDAO.Instance.GetByPedido(idPedido);

            report.ReportPath = Data.Helper.Utils.CaminhoRelatorio("Relatorios/ModeloPedidoReposicao/rptPedidoReposicao{0}.rdlc");

            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(PageRequest, pedido.IdLoja)));
            lstParam.Add(new ReportParameter("TipoRpt", ((int)tipo).ToString()));

            report.DataSources.Add(new ReportDataSource("Pedido", new Glass.Data.Model.Pedido[] { pedido }));
            report.DataSources.Add(new ReportDataSource("PedidoReposicao", new PedidoReposicao[] { pedidoRepos }));
            report.DataSources.Add(new ReportDataSource("ParcelasPedido", parcPedido));
            report.DataSources.Add(new ReportDataSource("ProdutosReposicao", ProdutosReposicaoDAO.GetByProdutosPedido(prodPedido)));
            report.DataSources.Add(new ReportDataSource("TipoPerda", TipoPerdaDAO.Instance.GetByPedidoRepos(idPedido)));
            report.DataSources.Add(new ReportDataSource("TipoPerdaRepos", new TipoPerdaRepos[] { TipoPerdaReposDAO.GetByPedidoRepos(idPedido) }));

            return(null);
        }
Exemplo n.º 2
0
        public static byte[] GetBytesRelatorio(HttpContext context, uint idOC, out Warning[] warnings, out string[] streamids,
                                               out string mimeType, out string encoding, out string extension)
        {
            LocalReport            report   = new LocalReport();
            List <ReportParameter> lstParam = new List <ReportParameter>();

            report.ReportPath = "Relatorios/OrdemCarga/rptOrdemCarga.rdlc";
            report.ReportPath = context.Server.MapPath("~/" + report.ReportPath);

            report.SubreportProcessing += new SubreportProcessingEventHandler(report_SubreportProcessing);

            lstParam.Add(new ReportParameter("ExibirEnderecoCliente", OrdemCargaConfig.ExibirEnderecoClienteRptOC.ToString()));

            var oc         = OrdemCargaDAO.Instance.GetForRptInd(idOC);
            var pedidosOC  = oc[0].Pedidos.ToArray();
            var produtosOC = ProdutosPedidoDAO.Instance.GetByPedidosForOcRpt(oc[0].IdOrdemCarga, oc[0].IdsPedidos);

            report.DataSources.Add(new ReportDataSource("OrdemCarga", oc));
            report.DataSources.Add(new ReportDataSource("Pedido", pedidosOC));
            report.DataSources.Add(new ReportDataSource("ProdutosPedido", produtosOC));

            // Atribui parâmetros ao relatório
            report.EnableExternalImages = true;

            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(context.Request)));
            lstParam.Add(new ReportParameter("TextoRodape", "WebGlass v" + Geral.ObtemVersao() + " - Relatório gerado automaticamente  em " +
                                             DateTime.Now.ToString("dd/MM/yyyy HH:mm")));
            lstParam.Add(new ReportParameter("CorRodape", "DimGray"));

            report.SetParameters(lstParam);

            return(report.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings));
        }
Exemplo n.º 3
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 = "")
        {
            List <OrcamentoRapido> lstOrca = new List <OrcamentoRapido>();
            OrcamentoRapido        orca;

            foreach (string item in outrosParametros)
            {
                string[] campos = item.Split('\t');

                orca               = new OrcamentoRapido();
                orca.Descricao     = campos[0];
                orca.Qtde          = Glass.Conversoes.StrParaInt(campos[1]);
                orca.Servicos      = campos[5];
                orca.ValorUnitario = Glass.Conversoes.StrParaDecimal(campos[6]);
                orca.Total         = Glass.Conversoes.StrParaDecimal(campos[7]);

                if (!String.IsNullOrEmpty(campos[2]))
                {
                    orca.Altura = float.Parse(campos[2], System.Globalization.NumberStyles.Any);
                }

                if (!String.IsNullOrEmpty(campos[3]))
                {
                    orca.Largura = Glass.Conversoes.StrParaInt(campos[3]);
                }

                if (!String.IsNullOrEmpty(campos[4]))
                {
                    string totM2     = campos[4];
                    string totM2Calc = totM2.IndexOf(" (") > -1 ? totM2.Substring(totM2.IndexOf(" (") + 2) : "0";

                    if (totM2.IndexOf(")") > -1)
                    {
                        totM2     = totM2.Substring(0, totM2.IndexOf(" ("));
                        totM2Calc = totM2Calc.Substring(0, totM2Calc.Length - 1);
                    }

                    orca.TotM2     = Glass.Conversoes.StrParaDouble(totM2);
                    orca.TotM2Calc = Glass.Conversoes.StrParaDouble(totM2Calc);
                }

                lstOrca.Add(orca);
            }

            report.ReportPath = "Relatorios/rptOrcamentoRapido.rdlc";
            report.DataSources.Add(new ReportDataSource("OrcamentoRapido", lstOrca));

            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);
        }
Exemplo n.º 4
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)
        {
            Medicao medicao = MedicaoDAO.Instance.GetForRptUnico(Glass.Conversoes.StrParaUint(Request["idMedicao"]));

            // Define qual relatório será exibido
            report.ReportPath = Glass.Data.Helper.Utils.CaminhoRelatorio("Relatorios/ModeloMedicao/rptMedicao{0}.rdlc");

            // Atribui medição ao relatório
            report.DataSources.Add(new ReportDataSource("Medicao", new Medicao[] { medicao }));

            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(PageRequest)));

            return(null);
        }
Exemplo n.º 5
0
        public static byte[] GetBytesRelatorio(HttpContext context, int idMDFe, bool preVisualizar, out Warning[] warnings, out string[] streamids,
                                               out string mimeType, out string encoding, out string extension)
        {
            var report   = new LocalReport();
            var lstParam = new List <ReportParameter>();

            var mdfe   = ManifestoEletronicoDAO.Instance.ObterManifestoEletronicoPeloId(idMDFe);
            var damdfe = MDFeDAO.ObterParaDAMDFE(context, mdfe.ChaveAcesso);

            var participanteEmitente = mdfe.Participantes.Where(f => f.TipoParticipante == Model.TipoParticipanteEnum.Emitente).FirstOrDefault();
            var idLojaEmitente       = participanteEmitente.IdLoja.GetValueOrDefault(0);

            report.ReportPath = "Relatorios/MDFe/rptDamdfeRetrato.rdlc";
            report.ReportPath = context.Server.MapPath("~/" + report.ReportPath);

            report.DataSources.Add(new ReportDataSource("MDFe", new MDFe[] { damdfe }));

            // Parâmetros para o cabeçalho/rodapé do relatório
            lstParam.Add(new ReportParameter("CodigoBarras", Utils.GetUrlSite(context) +
                                             "/Handlers/Damdfe.ashx?IdMDFe=" + idMDFe + "&isCodigoBarras=true"));
            lstParam.Add(new ReportParameter("Producao", (damdfe.TipoAmbiente == (int)Glass.Data.MDFeUtils.ConfigMDFe.TipoAmbienteMDFe.Producao &&
                                                          mdfe.Situacao != Model.SituacaoEnum.Cancelado && !preVisualizar).ToString().ToLower()));
            // Define se o MDF-e foi emitida em contingência
            lstParam.Add(new ReportParameter("Contingencia", (mdfe.TipoEmissao == Model.TipoEmissao.Contingencia).ToString().ToLower()));

            #region LogoTipo

            var logotipo = Logotipo.GetReportLogoColor(context.Request, (uint)idLojaEmitente);

            report.EnableExternalImages = true;
            lstParam.Add(new ReportParameter("Logotipo", logotipo));

            #endregion

            // Atribui parâmetros ao relatório
            report.SetParameters(lstParam);

            return(report.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings));
        }
Exemplo n.º 6
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)
        {
            WebGlass.Business.ConhecimentoTransporte.Entidade.Cte cte = WebGlass.Business.ConhecimentoTransporte.Fluxo.BuscarCte.Instance.
                                                                        GetCte(Glass.Conversoes.StrParaUint(Request["idCte"]));

            // Verifica qual relatório será chamado
            switch (Request["rel"])
            {
            case "CteTerceiros":
                report.ReportPath = "Relatorios/CTe/rptCTeTerceiros.rdlc";
                report.DataSources.Add(new ReportDataSource("Cte", new[] { cte }));
                report.DataSources.Add(new ReportDataSource("CobrancaDuplCte", cte.ObjCobrancaCte.ObjCobrancaDuplCte));
                report.DataSources.Add(new ReportDataSource("CobrancaCte", new[] { cte.ObjCobrancaCte }));
                report.DataSources.Add(new ReportDataSource("SeguroCte", new[] { cte.ObjSeguroCte }));
                report.DataSources.Add(new ReportDataSource("EntregaCte", new[] { cte.ObjEntregaCte }));
                report.DataSources.Add(new ReportDataSource("InfoCte", new[] { cte.ObjInfoCte }));
                report.DataSources.Add(new ReportDataSource("InfoCargaCte", cte.ObjInfoCte.ObjInfoCargaCte));
                report.DataSources.Add(new ReportDataSource("ImpostoCte", cte.ObjImpostoCte));
                report.DataSources.Add(new ReportDataSource("ConhecimentoTransporteRodoviario", new[] { cte.ObjConhecimentoTransporteRodoviario }));
                report.DataSources.Add(new ReportDataSource("ComplCte", new[] { cte.ObjComplCte }));
                report.DataSources.Add(new ReportDataSource("ParticipanteCte", cte.ObjParticipanteCte));
                report.DataSources.Add(new ReportDataSource("EfdCte", new[] { cte.ObjEfdCte }));
                report.DataSources.Add(new ReportDataSource("NfeCte", WebGlass.Business.ConhecimentoTransporte.Fluxo.BuscarNotaFiscalCte.Instance.GetForRpt(cte.IdCte)));
                break;
            }

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

            return(null);
        }
Exemplo n.º 7
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)
        {
            List <RetalhoAssociado> lstRetalho = new List <RetalhoAssociado>();
            RetalhoAssociado        retalho;

            foreach (string item in outrosParametros)
            {
                string[] campos = item.Split('\t');

                retalho = new RetalhoAssociado()
                {
                    IdPedido         = Glass.Conversoes.StrParaUint(campos[0]),
                    DescricaoProduto = campos[1],
                    LarguraAltura    = campos[2],
                    TotM             = Glass.Conversoes.StrParaFloat(campos[3]),
                    Proc             = campos[4],
                    Apl        = campos[5],
                    Qtde       = Glass.Conversoes.StrParaInt(campos[6]),
                    NumeroPeca = Glass.Conversoes.StrParaInt(campos[7]),
                    EtiquetaRetalhoSelecionado = campos.Length > 9 ? campos[8] : null,
                    RetalhoSelecionado         = campos.Length > 9 ? campos[9] : campos[8]
                };

                lstRetalho.Add(retalho);
            }

            report.ReportPath = "Relatorios/rptRetalhosAssociados.rdlc";
            report.DataSources.Add(new ReportDataSource("RetalhoAssociado", lstRetalho));

            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);
        }
Exemplo n.º 8
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)
        {
            // Pega idImpressão, se houver
            idImpressao       = Glass.Conversoes.StrParaUint(Request["idImpressao"]).ToString();
            numEtiqueta       = Request["numEtiqueta"];
            idProdPed         = Glass.Conversoes.StrParaUint(Request["idProdPed"]);
            idProdNf          = Glass.Conversoes.StrParaUint(Request["idProdNf"]);
            idAmbientePedido  = Glass.Conversoes.StrParaUint(Request["idAmbientePedido"]);
            idRetalhoProducao = Glass.Conversoes.StrParaUint(Request["idRetalhoProducao"]);

            ProdutoImpressaoDAO.TipoEtiqueta?tipoEtiqueta = null;

            // Se for impressão individual, salva o idProdPed com qtd 1 no hiddenfield
            if (Request["ind"] == "1")
            {
                if (idProdPed > 0)
                {
                    idImpressao = ProdutoImpressaoDAO.Instance.GetIdImpressaoByProdPed(idProdPed, true);
                }

                if (idProdNf > 0)
                {
                    idImpressao = ProdutoImpressaoDAO.Instance.GetIdImpressaoByProdNf(idProdNf, true);
                }

                if (idAmbientePedido > 0)
                {
                    idImpressao = ProdutoImpressaoDAO.Instance.GetIdImpressaoByAmbientePedido(idAmbientePedido, true);
                }

                if (idRetalhoProducao > 0)
                {
                    idImpressao = ProdutoImpressaoDAO.Instance.GetIdImpressaoByRetalhoProducao(idRetalhoProducao, true);
                }

                if (idImpressao == "0" && !String.IsNullOrEmpty(idImpressao))
                {
                    throw new Exception("Esta etiqueta ainda não foi impressa pelo controle de impressão.");
                }

                if (idImpressao != "0" && !String.IsNullOrEmpty(idImpressao))
                {
                    idImpressao  = ImpressaoEtiquetaDAO.Instance.GetAtivas(idImpressao);
                    tipoEtiqueta = ImpressaoEtiquetaDAO.Instance.GetTipoImpressao(Glass.Conversoes.StrParaUint(idImpressao.Split(',')[0]));
                }

                if (!String.IsNullOrEmpty(numEtiqueta) &&

                    /* Chamado 15725.
                     * Deve-se verificar se a etiqueta está impressa de acordo com o tipo correto da mesma. */
                    //!ProdutoImpressaoDAO.Instance.EstaImpressa(numEtiqueta.Replace("%2f", "/"), ProdutoImpressaoDAO.TipoEtiqueta.Pedido))
                    !ProdutoImpressaoDAO.Instance.EstaImpressa(numEtiqueta.Replace("%2f", "/"),
                                                               tipoEtiqueta.GetValueOrDefault(ProdutoImpressaoDAO.TipoEtiqueta.Pedido)))
                {
                    throw new Exception("Etiqueta não existe ou foi cancelada");
                }

                if (String.IsNullOrEmpty(idImpressao))
                {
                    throw new Exception("Esta etiqueta ainda não foi impressa ou sua impressão foi cancelada.");
                }
            }
            else if (idImpressao != "0" && !String.IsNullOrEmpty(idImpressao))
            {
                idImpressao  = ImpressaoEtiquetaDAO.Instance.GetAtivas(idImpressao);
                tipoEtiqueta = ImpressaoEtiquetaDAO.Instance.GetTipoImpressao(Glass.Conversoes.StrParaUint(idImpressao.Split(',')[0]));
            }
            else
            {
                if (outrosParametros[1] != null && outrosParametros[1].ToString() != String.Empty)
                {
                    tipoEtiqueta = (ProdutoImpressaoDAO.TipoEtiqueta)Glass.Conversoes.StrParaInt(outrosParametros[1].ToString());
                }

                if ((outrosParametros[2] != null && outrosParametros[2].ToString() != string.Empty) &&
                    (outrosParametros[2].ToString().ToLower().Contains("cadreporpeca") ||
                     outrosParametros[2].ToString().ToLower().Contains("cadmarcarpecaproducao") ||
                     outrosParametros[2].ToString().ToLower().Contains("cadretalhoproducao") ||
                     outrosParametros[2].ToString().ToLower().Contains("cadperdachapavidro")))
                {
                    tipoEtiqueta = ProdutoImpressaoDAO.TipoEtiqueta.Retalho;
                }
            }

            if (tipoEtiqueta == null)
            {
                var excessao = new Exception("Não foi possível identificar o tipo de impressão de etiqueta.");

                ErroDAO.Instance.InserirFromException(string.Format("ImprimirEtiqueta - OutrosParametros: {0}, {1}, {2}, {3}",
                                                                    outrosParametros != null && outrosParametros.Length > 0 ? outrosParametros[0].ToString() : "ND",
                                                                    outrosParametros != null && outrosParametros.Length > 1 ? outrosParametros[1].ToString() : "ND",
                                                                    outrosParametros != null && outrosParametros.Length > 2 ? outrosParametros[2].ToString() : "ND",
                                                                    outrosParametros != null && outrosParametros.Length > 3 ? outrosParametros[3].ToString() : "ND"), excessao);

                throw excessao;
            }

            if ((!String.IsNullOrEmpty(outrosParametros[0].ToString()) || (idImpressao != "0" && !String.IsNullOrEmpty(idImpressao)) || idProdPed > 0) ||
                (outrosParametros[2].ToString().ToLower().Contains("cadreporpeca") ||
                 outrosParametros[2].ToString().ToLower().Contains("cadmarcarpecaproducao") ||
                 outrosParametros[2].ToString().ToLower().Contains("cadretalhoproducao") ||
                 outrosParametros[2].ToString().ToLower().Contains("cadperdachapavidro")) && (outrosParametros[3] != null && outrosParametros[3].ToString() != String.Empty))
            {
                Etiqueta[] lstEtiq = null;

                bool reImprimir = Request["ind"] == "1" || Request["idImpressao"] != null;

                // Busca etiquetas, salvando impressão realizada
                switch (tipoEtiqueta.Value)
                {
                    #region ProdutoImpressaoDAO.TipoEtiqueta.Pedido

                case ProdutoImpressaoDAO.TipoEtiqueta.Pedido:
                    string[] dadosRetalhos = outrosParametros[5] != null ? outrosParametros[5].ToString().Split('+') : new string[0];

                    if (hdfSomenteRetalhos.Value == "1")
                    {
                        List <string> usar = new List <string>();
                        int           index;

                        foreach (string dados in outrosParametros[0].ToString().Split('|'))
                        {
                            if (String.IsNullOrEmpty(dados))
                            {
                                continue;
                            }

                            string[] dadosEtiqueta = dados.Split('\t');

                            if ((index = Array.FindIndex(dadosRetalhos, x => !String.IsNullOrEmpty(x) ?
                                                         x.Split('|')[0] == dadosEtiqueta[0] : false)) > -1)
                            {
                                if (!dadosEtiqueta[0].Contains("R"))
                                {
                                    dadosEtiqueta[2] = dadosRetalhos[index].Split('|')[1].Split(',').Length.ToString();
                                }

                                usar.Add(String.Join("\t", dadosEtiqueta));
                            }
                        }

                        outrosParametros[0] = String.Join("|", usar.ToArray());
                    }

                    int?idSolucaoOtimizacao = null;
                    int id2 = 0;

                    if (int.TryParse(outrosParametros[6]?.ToString(), out id2))
                    {
                        idSolucaoOtimizacao = id2;
                    }

                    lstEtiq = EtiquetaDAO.Instance.GetListPedidoComTransacao(login.CodUser, idImpressao, idProdPed, idAmbientePedido, outrosParametros[0].ToString(), false,
                                                                             reImprimir, Request["numEtiqueta"], Request["apenasPlano"] == "true", dadosRetalhos, idSolucaoOtimizacao);

                    break;

                    #endregion

                    #region ProdutoImpressaoDAO.TipoEtiqueta.NotaFiscal

                case ProdutoImpressaoDAO.TipoEtiqueta.NotaFiscal:
                    lstEtiq = EtiquetaDAO.Instance.GetListNFe(login.CodUser, idImpressao, idProdNf, outrosParametros[0].ToString(),
                                                              reImprimir, Request["numEtiqueta"]);

                    break;

                    #endregion

                    #region ProdutoImpressaoDAO.TipoEtiqueta.Retalho

                case ProdutoImpressaoDAO.TipoEtiqueta.Retalho:
                    var listaRetalhoProducao = new List <RetalhoProducao>();

                    if (idRetalhoProducao > 0)
                    {
                        listaRetalhoProducao.Add(RetalhoProducaoDAO.Instance.Obter(idRetalhoProducao));
                    }
                    else
                    {
                        var retalhos = Newtonsoft.Json.JsonConvert.DeserializeObject <RetalhoProducaoAuxiliarCollection>(outrosParametros[3].ToString());
                        var ids      = new List <uint>();

                        if (Request["numEtiqueta"] != null)
                        {
                            string[] numeroEtiqueta = Request["numEtiqueta"].ToString().Split(';');

                            foreach (var r in retalhos)
                            {
                                foreach (string n in numeroEtiqueta)
                                {
                                    ids = RetalhoProducaoDAO.Instance.CriarRetalho(r.Altura.ToString(), r.Largura.ToString(),
                                                                                   r.Quantidade.ToString(), r.Observacao.ToString(), n, login);

                                    foreach (uint id in ids)
                                    {
                                        RetalhoProducao ret = RetalhoProducaoDAO.Instance.Obter(id);
                                        listaRetalhoProducao.Add(ret);
                                    }
                                }
                            }
                        }
                        else if (Request["idProd"] != null)
                        {
                            var dados = Request["idProd"].ToString().Split(';');

                            uint idProd   = dados.Length == 1 ? Conversoes.ConverteValor <uint>(dados[0]) : Conversoes.ConverteValor <uint>(dados[1]);
                            uint idProdNF = dados.Length == 1 ? 0 : Conversoes.ConverteValor <uint>(dados[0]);

                            ids = RetalhoProducaoDAO.Instance.CriarRetalho(retalhos.GetList(), idProd, idProdNF, login);

                            foreach (uint id in ids)
                            {
                                RetalhoProducao ret = RetalhoProducaoDAO.Instance.Obter(id);
                                listaRetalhoProducao.Add(ret);
                            }
                        }
                    }

                    lstEtiq = EtiquetaDAO.Instance.GetListRetalho(login.CodUser, idImpressao, listaRetalhoProducao, idRetalhoProducao, reImprimir);

                    foreach (var etiqueta in lstEtiq)
                    {
                        if (string.IsNullOrEmpty(etiqueta.NomeCliente))
                        {
                            etiqueta.NomeCliente = " ";
                        }
                    }

                    break;

                    #endregion
                }

                /* Chamado 43775. */
                var idLojaPedido =
                    EtiquetaConfig.RelatorioEtiqueta.ModeloEtiquetaPorLoja && lstEtiq != null && lstEtiq.Length > 0 && lstEtiq[0].IdPedido.StrParaInt() > 0 ?
                    PedidoDAO.Instance.ObtemIdLoja(null, lstEtiq[0].IdPedido.StrParaUint()) : 0;

                if (Request["reposicao"] == "true")
                {
                    report.ReportPath = NomeArquivoRelatorioReposicao((int)idLojaPedido);
                }
                else
                {
                    report.ReportPath = EtiquetaConfig.RelatorioEtiqueta.NomeArquivoRelatorio((int)idLojaPedido,
                                                                                              tipoEtiqueta.Value == ProdutoImpressaoDAO.TipoEtiqueta.NotaFiscal,
                                                                                              tipoEtiqueta.Value == ProdutoImpressaoDAO.TipoEtiqueta.Retalho);
                }

                report.DataSources.Add(new ReportDataSource("Etiqueta", lstEtiq));
                lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo()));
                lstParam.Add(new ReportParameter("IsRetalho", (tipoEtiqueta.Value == ProdutoImpressaoDAO.TipoEtiqueta.Retalho).ToString().ToLower()));
            }

            return(null);
        }
Exemplo n.º 9
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)
        {
            Glass.Data.RelModel.Recibo recibo;

            // Verifica qual relatório será chamado
            switch (Request["rel"])
            {
            case "recibo":
                if (string.IsNullOrEmpty(outrosParametros[0].ToString()) || string.IsNullOrEmpty(outrosParametros[1].ToString()))
                {
                    return(null);
                }

                var idOrcamento = Request["idOrcamento"] != "0" && Request["idOrcamento"] != "" ? Request["idOrcamento"].StrParaUint() : 0;
                var idPedido    = Request["idPedido"] != "0" && Request["idPedido"] != "" ? Request["idPedido"].StrParaUint() : 0;
                var idLiberacao = Request["idLiberacao"] != "0" && Request["idLiberacao"] != "" ? Request["idLiberacao"].StrParaUint() : 0;
                var idsContaR   = outrosParametros[1].ToString();

                if (idsContaR == null || idsContaR == "0")
                {
                    if (PedidoConfig.LiberarPedido)
                    {
                        var contasRec = ContasReceberDAO.Instance.GetByLiberacaoPedido(idLiberacao, true);
                        if (contasRec != null && contasRec.Count > 0)
                        {
                            idsContaR = string.Join(",", contasRec.Select(f => f.IdContaR.ToString()));
                        }
                    }
                    else
                    {
                        var contasRec = ContasReceberDAO.Instance.GetByPedido(null, idPedido, false, true);
                        if (contasRec != null && contasRec.Count > 0)
                        {
                            idsContaR = string.Join(",", contasRec.Select(f => f.IdContaR.ToString()));
                        }
                    }
                }

                var orcamento = new Data.Model.Orcamento();
                var pedido    = new Data.Model.Pedido();
                var liberacao = new LiberarPedido();

                var nomeCliente  = string.Empty;
                var nomeVendedor = string.Empty;
                var idLoja       = new uint();
                var total        = new decimal();

                #region Orçamento

                // Recupera os dados do orçamento.
                if (idOrcamento > 0)
                {
                    orcamento = OrcamentoDAO.Instance.GetElementByPrimaryKey(idOrcamento);

                    if (orcamento.IdCliente > 0)
                    {
                        nomeCliente = ClienteDAO.Instance.GetNome(orcamento.IdCliente.Value);
                    }
                    else
                    {
                        nomeCliente = orcamento.NomeCliente;
                    }

                    nomeVendedor = orcamento.IdFuncionario > 0 ? FuncionarioDAO.Instance.GetNome(orcamento.IdFuncionario.Value) : login.Nome;
                    idLoja       = orcamento.IdLoja > 0 ? orcamento.IdLoja.Value : login.IdLoja;
                    total        = orcamento.Total;

                    idPedido    = 0;
                    idLiberacao = 0;
                }

                #endregion

                #region Pedido

                // Recupera os dados do pedido.
                else if (idPedido > 0)
                {
                    pedido       = PedidoDAO.Instance.GetElementByPrimaryKey(idPedido);
                    nomeCliente  = ClienteDAO.Instance.GetNome(pedido.IdCli);
                    nomeVendedor = pedido.IdFunc > 0 ? FuncionarioDAO.Instance.GetNome(pedido.IdFunc) : login.Nome;
                    idLoja       = pedido.IdPedido > 0 ? pedido.IdLoja : login.IdLoja;
                    total        = pedido.Total;

                    // Se houver pcp, usa o total do mesmo
                    var totalEspelho = PedidoEspelhoDAO.Instance.ObtemTotal(idPedido);
                    if (totalEspelho > 0)
                    {
                        total = totalEspelho;
                    }

                    idLiberacao = 0;
                }

                #endregion

                #region Liberação

                // Recupera os dados da liberação.
                else if (idLiberacao > 0)
                {
                    liberacao    = LiberarPedidoDAO.Instance.GetElement(idLiberacao);
                    nomeCliente  = ClienteDAO.Instance.GetNome(liberacao.IdCliente);
                    nomeVendedor = !string.IsNullOrEmpty(liberacao.NomeFunc) ? liberacao.NomeFunc : login.Nome;
                    idLoja       = (uint)FuncionarioDAO.Instance.GetElementByPrimaryKey(liberacao.IdFunc).IdLoja;
                    total        = liberacao.Total;
                }

                #endregion

                recibo                 = new Data.RelModel.Recibo();
                recibo.Tipo            = Conversoes.StrParaInt(Request["referente"]);
                recibo.IdOrcamento     = orcamento.IdOrcamento;
                recibo.IdPedido        = pedido.IdPedido;
                recibo.IdLiberarPedido = liberacao.IdLiberarPedido;
                recibo.Cliente         = nomeCliente;
                recibo.IdLoja          = idLoja;
                recibo.SinalPedido     = pedido.IdPedido > 0 ? pedido.ValorEntrada + pedido.ValorPagamentoAntecipado : 0;
                recibo.Total           = total;
                recibo.Vendedor        = nomeVendedor;
                recibo.Items           = outrosParametros[0].ToString();
                recibo.NumParcelas     = idsContaR;
                recibo.ValorReferente  = Request["valorRef"];
                recibo.MotivoReferente = Request["motivoRef"];
                report.ReportPath      = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/ModeloRecibo/rptRecibo{0}.rdlc");

                if (report.ReportPath == "Relatorios/Genericos/ModeloRecibo/rptReciboVidrosEVidros.rdlc")
                {
                    lstParam.Add(new ReportParameter("ImagemCabecalho",
                                                     "file:///" + PageRequest.PhysicalApplicationPath.Replace('\\', '/') + "Images/cabecalhoOrcamentoVivrosEVidros.jpg"));
                }

                if (ReciboConfig.Relatorio.UsarParcelasPedido && pedido.IdPedido > 0)
                {
                    report.DataSources.Add(new ReportDataSource("ParcelasPedido", pedido.NumParc > 0 ? ParcelasPedidoDAO.Instance.GetByPedido(pedido.IdPedido) :
                                                                new ParcelasPedido[0]));
                }

                report.DataSources.Add(new ReportDataSource("Recibo", new Data.RelModel.Recibo[] { recibo }));
                break;

            case "reciboPgAntec":
                Sinal   sinal       = SinalDAO.Instance.GetSinalDetails(Glass.Conversoes.StrParaUint(Request["idPgAntecipado"]));
                Cliente clientePgto = ClienteDAO.Instance.GetElementByPrimaryKey(sinal.IdCliente);

                recibo                 = new Data.RelModel.Recibo();
                recibo.Tipo            = Glass.Conversoes.StrParaInt(Request["referente"]);
                recibo.IdSinal         = sinal.IdSinal;
                recibo.Cliente         = clientePgto.Nome;
                recibo.IdLoja          = (uint)FuncionarioDAO.Instance.GetElementByPrimaryKey(sinal.UsuCad).IdLoja;
                recibo.Total           = sinal.TotalSinal;
                recibo.Vendedor        = FuncionarioDAO.Instance.GetNome(sinal.UsuCad);
                recibo.Items           = outrosParametros[0].ToString();
                recibo.NumParcelas     = outrosParametros[1].ToString();
                recibo.ValorReferente  = Request["valorRef"];
                recibo.MotivoReferente = Request["motivoRef"];
                report.ReportPath      = Glass.Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/ModeloRecibo/rptRecibo{0}.rdlc");

                report.DataSources.Add(new ReportDataSource("Recibo", new Data.RelModel.Recibo[] { recibo }));
                break;

            case "reciboAcerto":

                uint idAcerto = Request["idAcerto"] != "0" && Request["idAcerto"] != "" ? Glass.Conversoes.StrParaUint(Request["idAcerto"]) : 0;

                if (idAcerto > 0 && !AcertoDAO.Instance.Exists(idAcerto))
                {
                    Response.Write("O acerto informado não existe.");
                    return(null);
                }

                Acerto acerto = AcertoDAO.Instance.GetByCliList(Convert.ToInt32(idAcerto), 0, 0, 0, null, null, 0, 0, 0, 0, null, 0, 10)[0];

                recibo                 = new Data.RelModel.Recibo();
                recibo.Tipo            = Glass.Conversoes.StrParaInt(Request["referente"]);
                recibo.IdAcerto        = acerto.IdAcerto;
                recibo.Cliente         = ClienteDAO.Instance.GetNome(acerto.IdCli);
                recibo.IdLoja          = (uint)FuncionarioDAO.Instance.GetElementByPrimaryKey(acerto.UsuCad).IdLoja;
                recibo.Total           = acerto.TotalAcerto;
                recibo.Vendedor        = FuncionarioDAO.Instance.GetNome(acerto.UsuCad);
                recibo.Items           = outrosParametros[0].ToString();
                recibo.NumParcelas     = outrosParametros[1].ToString();
                recibo.ValorReferente  = Request["valorRef"];
                recibo.MotivoReferente = Request["motivoRef"];
                report.ReportPath      = Glass.Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/ModeloRecibo/rptRecibo{0}.rdlc");

                report.DataSources.Add(new ReportDataSource("Recibo", new Data.RelModel.Recibo[] { recibo }));

                break;

            case "termoaceitacao":
                if (!PedidoDAO.Instance.PedidoExists(Glass.Conversoes.StrParaUint(Request["ped"])))
                {
                    Response.Write("O pedido informado não existe.");
                    return(null);
                }

                Glass.Data.Model.Pedido pedTermo = PedidoDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(Request["ped"]));

                if (pedTermo.IdOrcamento == null)
                {
                    pedTermo.IdOrcamento = 0;
                }

                pedTermo.InfoAdicional = Request["infAdic"]?.Replace("\\n", "\n") ?? string.Empty;

                report.ReportPath = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/rptAceitacao{0}.rdlc");

                report.DataSources.Add(new ReportDataSource("PedidoRpt", PedidoRptDAL.Instance.CopiaLista(new Glass.Data.Model.Pedido[] { pedTermo }, PedidoRpt.TipoConstrutor.TermoAceitacao, false, login)));
                break;

            case "riscoquebra":
                // Verifica se pedido passado existe
                if (!PedidoDAO.Instance.PedidoExists(Glass.Conversoes.StrParaUint(Request["idPedido"])))
                {
                    Response.Write("O pedido informado não existe.");
                    return(null);
                }

                var risco = new Data.RelModel.RiscoQuebra();
                Glass.Data.Model.Pedido ped = PedidoDAO.Instance.GetElementByPrimaryKey(Glass.Conversoes.StrParaUint(Request["idPedido"]));
                Cliente cli = ClienteDAO.Instance.GetElementByPrimaryKey(ped.IdCli);
                cli.Cidade       = CidadeDAO.Instance.GetNome((uint?)cli.IdCidade);
                risco.IdPedido   = ped.IdPedido;
                risco.NomeLoja   = LojaDAO.Instance.GetElementByPrimaryKey(ped.IdLoja).NomeFantasia;
                risco.CidadeData = LojaDAO.Instance.GetElement(ped.IdLoja).Cidade + " " + Formatacoes.DataExtenso(DateTime.Now);
                risco.Cliente    = cli.Nome;
                risco.Endereco   = !string.IsNullOrEmpty(ped.LocalizacaoObra) ? ped.LocalizacaoObra : cli.EnderecoCompleto;
                risco.Telefone   = cli.Telefone;
                risco.Texto      = Request["texto"];

                report.ReportPath = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/rptRiscoQuebra{0}.rdlc");

                report.DataSources.Add(new ReportDataSource("RiscoQuebra", new Data.RelModel.RiscoQuebra[] { risco }));
                break;

            case "reciboContaPagar":
            {
                var idContaPagar = Request["idContaPagar"] != "0" && Request["idContaPagar"] != "" ? Glass.Conversoes.StrParaInt(Request["idContaPagar"]) : 0;
                var contaPg      = ContasPagarDAO.Instance.GetPagasForRpt(idContaPagar, 0, null, 0, 0, 0, 0, null, null, null, null, null, null, null, null, 0, 0, 0, false, true, false, null, false,
                                                                          false, 0, 0, null, null);

                if (contaPg.Length == 0)
                {
                    throw new Exception("A conta a pagar informada não existe ou não está paga.");
                }

                recibo = new Data.RelModel.Recibo();
                recibo.IdContaPagar    = idContaPagar;
                recibo.IdLoja          = contaPg[0].IdLoja.GetValueOrDefault(0);
                recibo.Total           = contaPg[0].ValorPago;
                recibo.Cliente         = FornecedorDAO.Instance.GetElementByPrimaryKey(contaPg[0].IdFornec.GetValueOrDefault(0)).Nome;
                recibo.MotivoReferente = contaPg[0].DescrPlanoConta;

                report.ReportPath = Glass.Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/ModeloRecibo/rptRecibo{0}.rdlc");
                recibo.Tipo       = Glass.Conversoes.StrParaInt(Request["referente"]);

                report.DataSources.Add(new ReportDataSource("Recibo", new Data.RelModel.Recibo[] { recibo }));

                break;
            }
            }

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

            return(null);
        }
Exemplo n.º 10
0
        public static byte[] GetBytesRelatorio(HttpContext context, uint idNf, bool preVisualizar, out Warning[] warnings, out string[] streamids,
                                               out string mimeType, out string encoding, out string extension)
        {
            var report      = new LocalReport();
            var lstParam    = new List <ReportParameter>();
            var nf          = NotaFiscalDAO.Instance.GetElement(idNf);
            var danfe       = NFeDAO.Instance.GetForDanfe(context, nf.ChaveAcesso);
            var produtosNFe = ProdutosNFeDAO.Instance.GetForDanfe(context, nf.ChaveAcesso);
            var idLoja      = nf.IdLoja.Value;

            report.DataSources.Add(new ReportDataSource("NFe", new NFe[] { danfe }));
            report.DataSources.Add(new ReportDataSource("ProdutosNFe", produtosNFe));

            #region NFC-e

            if (nf.Consumidor)
            {
                var loja = LojaDAO.Instance.GetElement(NotaFiscalDAO.Instance.ObtemIdLoja(idNf));
                var uf   = loja.Uf;

                #region Report Path

                report.ReportPath = Utils.CaminhoRelatorio("Relatorios/NFe/rptDanfeNFCe{0}.rdlc");

                #endregion

                #region Pagamentos

                var pagamentos = PagtoNotaFiscalDAO.Instance.ObtemPagamentos(null, (int)idNf);

                report.DataSources.Add(new ReportDataSource("PagtoNotaFiscal", pagamentos));

                #endregion

                #region Parametros

                // Parâmetros para o relatório
                lstParam.Add(new ReportParameter("QtdItens", produtosNFe.Length.ToString()));

                // Verifica apenas se a nota não é cancelada, pois a nota só muda para autorizada depois de enviar o email,
                // fazendo com que os clientes recebesse o DANFE dizendo que a nota "não é um documento fiscal válido"
                lstParam.Add(new ReportParameter("Producao", (danfe.TipoAmbiente == (int)ConfigNFe.TipoAmbienteNfe.Producao && nf.Situacao != (int)NotaFiscal.SituacaoEnum.Cancelada && !preVisualizar).ToString().ToLower()));

                #region Total de tributos

                decimal valorTotalTributos = 0;
                var     cfop      = CfopDAO.Instance.GetElementByPrimaryKey(nf.IdCfop.Value);
                var     cliente   = ClienteDAO.Instance.GetElement(nf.IdCliente.Value);
                var     lstProdNf = ProdutosNfDAO.Instance.GetByNfExtended(idNf);

                // CFOP's de simples faturamento/venda futura não devem destacar os impostos
                var exibirImpostoCfop = cfop.CodInterno != "5922" && cfop.CodInterno != "6922";

                try
                {
                    if (nf.TipoDocumento == (int)NotaFiscal.TipoDoc.Saída && exibirImpostoCfop && cliente != null)
                    {
                        var retorno = ImpostoNcmUFDAO.Instance.ObtemDadosImpostos(lstProdNf);

                        valorTotalTributos = retorno.ValorImpostoNacional + retorno.ValorImpostoEstadual;
                    }
                }
                catch (Exception ex)
                {
                    ErroDAO.Instance.InserirFromException("BuscarTributos", ex);

                    throw new Exception(MensagemAlerta.FormatErrorMsg("Falha ao buscar tributos aproximados.", ex));
                }

                if (valorTotalTributos == 0 && nf.ValorTotalTrib > 0)
                {
                    valorTotalTributos = nf.ValorTotalTrib;
                }

                lstParam.Add(new ReportParameter("ValorTotalTributos", valorTotalTributos.ToString()));

                #endregion

                //Url para consultar a NFC-e por chave de acesso
                lstParam.Add(new ReportParameter("UrlConsulta", danfe.UrlChave));

                // Define se a NFC-e foi emitida em contingência
                lstParam.Add(new ReportParameter("Contingencia", (nf.FormaEmissao != (int)NotaFiscal.TipoEmissao.Normal).ToString().ToLower()));

                #endregion

                #region QR Code

                /* Chamado 44291. */
                if (FiscalConfig.CorrecaoGeracaoCodigoBarrasDanfe)
                {
                    var url = Utils.GetFullUrl(context, "/Handlers/Danfe.ashx?idNf=" + idNf + "&isQrCode=true");
                    var uri = new Uri(url);
                    lstParam.Add(new ReportParameter("QrCode",
                                                     string.Format("{0}://localhost:{1}{2}", uri.Scheme, uri.Port, uri.PathAndQuery)));
                }
                else
                {
                    lstParam.Add(new ReportParameter("QrCode", Utils.GetUrlSite(context) +
                                                     "/Handlers/Danfe.ashx?idNf=" + idNf + "&isQrCode=true"));
                }

                #endregion
            }

            #endregion

            #region NF-e

            else
            {
                #region Report Path

                report.ReportPath = Utils.CaminhoRelatorio("Relatorios/NFe/rptDanfeRetrato{0}.rdlc");

                #endregion

                #region Email

                if (nf.IdLoja > 0)
                {
                    danfe.EnderecoEmit += " " + LojaDAO.Instance.GetElementByPrimaryKey(nf.IdLoja.Value).EmailFiscal;
                }
                danfe.EmailFiscal += " " + LojaDAO.Instance.GetElementByPrimaryKey(nf.IdLoja.Value).EmailFiscal;

                #endregion

                #region Parametros

                if (nf.FormaEmissao == (int)NotaFiscal.TipoEmissao.ContingenciaFSDA)
                {
                    report.ReportPath = Utils.CaminhoRelatorio("Relatorios/NFe/rptDanfeRetratoFS{0}.rdlc");

                    lstParam.Add(new ReportParameter("Cabecalho_DadosAdicionaisNfe", danfe.DadosAdicionaisFs));
                    lstParam.Add(new ReportParameter("Cabecalho_CodigoBarrasAdicionais", Utils.GetUrlSite(context) +
                                                     "/Handlers/Danfe.ashx?idNf=" + idNf + "&isCodigoBarras=true&dadosAdicionais=true"));
                }

                // Verifica apenas se a nota não é cancelada, pois a nota só muda para autorizada depois de enviar o email,
                // fazendo com que os clientes recebesse o DANFE dizendo que a nota "não é um documento fiscal válido"
                lstParam.Add(new ReportParameter("Producao", (danfe.TipoAmbiente == (int)ConfigNFe.TipoAmbienteNfe.Producao && nf.Situacao != (int)NotaFiscal.SituacaoEnum.Cancelada && !preVisualizar).ToString().ToLower()));

                lstParam.Add(new ReportParameter("ExibirNFCancelada",
                                                 (!preVisualizar && danfe.TipoAmbiente == (int)ConfigNFe.TipoAmbienteNfe.Producao &&
                                                  nf.Situacao == (int)NotaFiscal.SituacaoEnum.Cancelada).ToString().ToLower()));

                // Parâmetros para o cabeçalho/rodapé do relatório
                lstParam.Add(new ReportParameter("Cabecalho_NumeroNfe", danfe.NumeroNfe));
                lstParam.Add(new ReportParameter("Cabecalho_SerieNfe", danfe.SerieNfe));
                lstParam.Add(new ReportParameter("Cabecalho_RazaoSocialEmit", danfe.RazaoSocialEmit));
                lstParam.Add(new ReportParameter("Cabecalho_EnderecoEmit", danfe.EnderecoEmit));
                lstParam.Add(new ReportParameter("Cabecalho_TipoNfe", danfe.TipoNfe));
                lstParam.Add(new ReportParameter("Cabecalho_ChaveAcesso", danfe.ChaveAcesso));
                lstParam.Add(new ReportParameter("Cabecalho_NatOperacao", danfe.NatOperacao));
                lstParam.Add(new ReportParameter("Cabecalho_ProtAutorizacao", String.IsNullOrEmpty(danfe.ProtAutorizacao) ? "." : danfe.ProtAutorizacao));
                lstParam.Add(new ReportParameter("Cabecalho_InscEstEmit", danfe.InscEstEmit));
                lstParam.Add(new ReportParameter("Cabecalho_InscEstStEmit", danfe.InscEstStEmit));
                lstParam.Add(new ReportParameter("Cabecalho_CnpjEmit", danfe.CnpjEmit));

                lstParam.Add(new ReportParameter("TextoDadosRecebimento",
                                                 string.Format("RECEBEMOS DE {0} CNPJ {1} OS PRODUTOS E/OU SERVIÇOS CONSTANTES DA NOTA FISCAL ELETRÔNICA INDICADA AO LADO." +
                                                               "\nDESTINATÁRIO: {2} {3} Emissão: {4}. VALOR TOTAL: {5}.", danfe.RazaoSocialEmit, danfe.CnpjEmit,
                                                               danfe.RazaoSocialRemet, danfe.EnderecoRemet, danfe.DataEmissao, danfe.VlrTotalNota.StrParaDecimal().ToString("C"))));

                if (!report.ReportPath.Contains("rptDanfeSemLogo"))
                {
                    lstParam.Add(new ReportParameter("Cabecalho_DestacarNFe", "false"));
                }

                lstParam.Add(new ReportParameter("Rodape_InformacoesCompl", danfe.InformacoesCompl));

                #endregion

                #region Código de barras

                /* Chamado 18187. */
                if (FiscalConfig.CorrecaoGeracaoCodigoBarrasDanfe)
                {
                    var url = Utils.GetFullUrl(context, "/Handlers/Danfe.ashx?idNf=" + idNf + "&isCodigoBarras=true");
                    var uri = new Uri(url);
                    lstParam.Add(new ReportParameter("Cabecalho_CodigoBarras",
                                                     string.Format("{0}://localhost:{1}{2}", uri.Scheme, uri.Port, uri.PathAndQuery)));
                }
                else
                {
                    lstParam.Add(new ReportParameter("Cabecalho_CodigoBarras", Utils.GetUrlSite(context) +
                                                     "/Handlers/Danfe.ashx?idNf=" + idNf + "&isCodigoBarras=true"));
                }

                #endregion
            }

            #endregion

            #region LogoTipo

            var logotipo = Logotipo.GetReportLogoNF(context.Request, idLoja);

            if (FiscalConfig.NotaFiscalConfig.EsconderLogotipoDANFEComLogo)
            {
                logotipo = ".";
            }

            report.EnableExternalImages = true;
            lstParam.Add(new ReportParameter("Logotipo", logotipo));

            #endregion

            //Ajusta o caminho do report
            report.ReportPath = context.Server.MapPath("~/" + report.ReportPath);

            // Atribui parâmetros ao relatório
            report.SetParameters(lstParam);

            return(report.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings));
        }
Exemplo n.º 11
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 "imagemProjeto":
                report.ReportPath = NomeArquivoRelatorioImagemProjeto;

                // Identifica se foi selecionado para imprimir alumínios e ferragens.
                bool imprAlumFerr = Request["imprAlumFerr"] == "true";

                uint                       idProjeto   = !String.IsNullOrEmpty(Request["idProjeto"]) ? Glass.Conversoes.StrParaUint(Request["idProjeto"]) : 0;
                var                        projeto     = idProjeto > 0 ? ProjetoDAO.Instance.GetElement(idProjeto) : new Data.Model.Projeto();
                ItemProjeto[]              itemProjeto = ItemProjetoDAO.Instance.GetByString(Request["idItemProjeto"]);
                List <PecaItemProjeto>     lstPeca     = new List <PecaItemProjeto>();
                List <MaterialItemProjeto> lstMaterial = new List <MaterialItemProjeto>();
                List <Imagem>              lstImagens  = new List <Imagem>();
                List <MedidaItemProjeto>   lstMedidas  = new List <MedidaItemProjeto>();

                // Busca o pedido, se houver, relacionado à este projeto
                projeto.IdPedido = ProjetoDAO.Instance.GetIdPedidoByProjeto(idProjeto);

                if (projeto.IdPedido == 0)
                {
                    // Tenta buscar o pedido pelo item projeto.
                    if (itemProjeto[0].IdPedido > 0)
                    {
                        projeto.IdPedido = itemProjeto[0].IdPedido.Value;
                    }
                    else if (itemProjeto[0].IdPedidoEspelho > 0)
                    {
                        projeto.IdPedido = itemProjeto[0].IdPedidoEspelho.Value;
                    }
                    else if (itemProjeto[0].IdOrcamento > 0)
                    {
                        projeto.IdPedido = PedidoDAO.Instance.GetIdPedidoByOrcamento(itemProjeto[0].IdOrcamento.Value);
                    }
                }

                if (projeto.IdPedido > 0)
                {
                    var idCliente = PedidoDAO.Instance.ObtemIdCliente(null, projeto.IdPedido);

                    projeto.NomeCliente  = ClienteDAO.Instance.GetNome(idCliente);
                    projeto.Rota         = RotaDAO.Instance.ObtemCodRota(idCliente);
                    projeto.NomeFunc     = FuncionarioDAO.Instance.GetNome(PedidoDAO.Instance.ObtemIdFunc(null, projeto.IdPedido));
                    projeto.DataCad      = PedidoDAO.Instance.ObtemDataPedido(null, projeto.IdPedido);
                    projeto.TipoEntrega  = PedidoDAO.Instance.ObtemTipoEntrega(null, projeto.IdPedido);
                    projeto.Obs          = PedidoDAO.Instance.ObtemObs(null, projeto.IdPedido);
                    projeto.ObsLiberacao = PedidoDAO.Instance.ObtemObsLiberacao(projeto.IdPedido);
                }

                for (int i = 0; i < itemProjeto.Length; i++)
                {
                    var           pcp    = itemProjeto[i].IdPedidoEspelho.HasValue;
                    ProjetoModelo modelo = ProjetoModeloDAO.Instance.GetElementByPrimaryKey(itemProjeto[i].IdProjetoModelo);
                    lstPeca.AddRange(PecaItemProjetoDAO.Instance.GetByItemProjetoRpt(itemProjeto[i].IdItemProjeto, itemProjeto[i].IdProjetoModelo, pcp));

                    // Caso a imagem da peça tenha sido editada então a impressão não deve exibir se a peça possui arquivo de otimização.
                    for (var x = 0; x < lstPeca.Count; x++)
                    {
                        var pecaPossuiFiguraAssociada  = PecaItemProjetoDAO.Instance.PossuiFiguraAssociada(null, lstPeca[x].IdPecaItemProj);
                        var pecaPossuiEdicaoCadProject = lstPeca[x].IdProdPed != null ? lstPeca[x].ImagemEditada && ProdutosPedidoEspelhoDAO.Instance.PossuiEdicaoCadProject((uint)lstPeca[x].IdProdPed, pcp):false;
                        var produtoPossuiImagemEditada = pcp && ProdutosPedidoEspelhoDAO.Instance.PossuiImagemAssociada(null, (uint)lstPeca[x]?.IdProdPed.GetValueOrDefault());

                        if (lstPeca[x].IdArquivoMesaCorte > 0 && lstPeca[x].TipoArquivoMesaCorte > 0)
                        {
                            if ((produtoPossuiImagemEditada || lstPeca[x].ImagemEditada || pecaPossuiFiguraAssociada) &&
                                lstPeca[x].TipoArquivoMesaCorte != (int)TipoArquivoMesaCorte.FMLBasico && !pecaPossuiEdicaoCadProject)
                            {
                                lstPeca[x].IdArquivoMesaCorte   = null;
                                lstPeca[x].TipoArquivoMesaCorte = null;
                            }
                        }
                    }

                    int atual = lstMaterial.Count;
                    lstMaterial.AddRange(MaterialItemProjetoDAO.Instance.GetForRptItemProjeto(itemProjeto[i].IdItemProjeto, false));
                    int numeroMateriais = lstMaterial.Count - atual;

                    // Verifica se os materiais do itemProjeto deverão ser impressos também
                    itemProjeto[i].MostrarMateriais = imprAlumFerr && numeroMateriais > 0;

                    // Pega a imagem do projeto com as medidas já desenhadas e o modelo da imagem
                    if (modelo.IdGrupoModelo != (uint)UtilsProjeto.GrupoModelo.Outros)
                    {
                        itemProjeto[i].ImagemProjeto = Data.Helper.Utils.GetImageFromRequest(UtilsProjeto.GetFiguraAssociadaUrl(itemProjeto[i].IdItemProjeto, modelo));

                        // Salva a imagem na memória, recupera os bytes e os salva na propriedade ImagemProjetoModelo.
                        // Chamado 50315 - o nome da imagem deve ser recuperado dentro do try para não retornar erro quando o mesmo for null.
                        try
                        {
                            var arquivo = System.IO.Path.Combine(Glass.Data.Helper.Utils.ModelosProjetoPath(Context), modelo.NomeFigura);
                            if (System.IO.File.Exists(arquivo))
                            {
                                using (var image = new Bitmap(arquivo))
                                    using (var ms = new System.IO.MemoryStream())
                                    {
                                        image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                                        itemProjeto[i].ImagemProjetoModelo = ms.ToArray();
                                    }
                            }
                        }
                        catch { }

                        itemProjeto[i].ImagemProjetoModelo = Data.Helper.Utils.GetImageFromRequest("../../Handlers/LoadImage.ashx?path=" + Data.Helper.Utils.ModelosProjetoPath(Context) +
                                                                                                   modelo.NomeFigura + "&altura=" + modelo.AlturaFigura + "&largura=" + modelo.LarguraFigura);
                    }

                    // Copia o idPedidoEspelho para o idPedido
                    if (itemProjeto[i].IdPedido == null)
                    {
                        itemProjeto[i].IdPedido = itemProjeto[i].IdPedidoEspelho;
                    }

                    lstImagens.AddRange(ImagemDAO.Instance.GetPecasAlteradas(itemProjeto[i].IdItemProjeto,
                                                                             Glass.Configuracoes.ProjetoConfig.RelatorioImagemProjeto.PercentualTamanhoImagemRelatorio));
                    lstMedidas.AddRange(MedidaItemProjetoDAO.Instance.GetListByItemProjeto(itemProjeto[i].IdItemProjeto));
                }

                lstParam.Add(new ReportParameter("Pedido_PedCli", projeto.IdPedido > 0 ? PedidoDAO.Instance.ObtemPedCli(null, projeto.IdPedido) : string.Empty));
                lstParam.Add(new ReportParameter("FastDelivery", PedidoDAO.Instance.IsFastDelivery(null, projeto.IdPedido).ToString()));
                lstParam.Add(new ReportParameter("ExibirImagemModelo", (true).ToString()));
                lstParam.Add(new ReportParameter("CorObs", Glass.Configuracoes.ProjetoConfig.RelatorioImagemProjeto.CorObsNoRelatorio));
                lstParam.Add(new ReportParameter("TemEdicaoCadProject", "true"));
                lstParam.Add(new ReportParameter("ImagensPecasIndividuais", "true"));
                lstParam.Add(new ReportParameter("AgruparBeneficiamentos", PedidoConfig.RelatorioPedido.AgruparBenefRelatorio.ToString()));

                report.DataSources.Add(new ReportDataSource("Projeto", new Data.Model.Projeto[] { projeto }));
                report.DataSources.Add(new ReportDataSource("ItemProjeto", itemProjeto));
                report.DataSources.Add(new ReportDataSource("PecaItemProjeto", lstPeca.ToArray()));
                report.DataSources.Add(new ReportDataSource("MaterialItemProjeto", lstMaterial.ToArray()));
                report.DataSources.Add(new ReportDataSource("Imagem", lstImagens.ToArray()));
                report.DataSources.Add(new ReportDataSource("MedidaItemProjeto", lstMedidas.ToArray()));
                break;

            case "totaisProjeto":
                report.ReportPath = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Projeto/rptTotaisProjeto{0}.rdlc");
                bool exibirCusto = UserInfo.GetUserInfo.TipoUsuario == (uint)Data.Helper.Utils.TipoFuncionario.Administrador ||
                                   UserInfo.GetUserInfo.TipoUsuario == (uint)Data.Helper.Utils.TipoFuncionario.Gerente;

                string titulo      = String.Empty;
                string nomeCliente = String.Empty;
                string tipoEntrega = String.Empty;
                float  taxaPrazo   = 0;

                uint idProjeto_Totais       = Glass.Conversoes.StrParaUint(Request["idProjeto"]);
                uint idOrcamento_Totais     = Glass.Conversoes.StrParaUint(Request["idOrcamento"]);
                uint idPedido_Totais        = Glass.Conversoes.StrParaUint(Request["idPedido"]);
                uint idPedidoEspelho_Totais = Glass.Conversoes.StrParaUint(Request["idPedidoEspelho"]);

                if (idProjeto_Totais > 0)
                {
                    var projeto_Totais = ProjetoDAO.Instance.GetElementByPrimaryKey(idProjeto_Totais);
                    titulo      = "Impressão Projeto N.º " + idProjeto_Totais;
                    nomeCliente = projeto_Totais.IdCliente > 0 ? ClienteDAO.Instance.GetNome(projeto_Totais.IdCliente.Value) : projeto_Totais.NomeCliente;
                    tipoEntrega = projeto_Totais.DescrTipoEntrega;
                    taxaPrazo   = projeto_Totais.TaxaPrazo;
                }
                else if (idOrcamento_Totais > 0)
                {
                    var orcamento_Totais = OrcamentoDAO.Instance.GetElementByPrimaryKey(idOrcamento_Totais);
                    titulo      = "Impressão dos Projetos do Orçamento N.º " + idOrcamento_Totais;
                    nomeCliente = orcamento_Totais.IdCliente > 0 ? orcamento_Totais.IdCliente + " - " + ClienteDAO.Instance.GetNome(orcamento_Totais.IdCliente.Value) : orcamento_Totais.NomeCliente;
                    tipoEntrega = orcamento_Totais.DescrTipoEntrega;
                    taxaPrazo   = orcamento_Totais.TaxaPrazo;
                }
                else if (idPedido_Totais > 0 || idPedidoEspelho_Totais > 0)
                {
                    Glass.Data.Model.Pedido pedido_Totais = PedidoDAO.Instance.GetElementByPrimaryKey(idPedido_Totais > 0 ? idPedido_Totais : idPedidoEspelho_Totais);
                    titulo = idPedido_Totais > 0 ? "Impressão dos Projetos do Pedido N.º " + idPedido_Totais :
                             "Impressão dos Projetos da Conferência do Pedido N.º " + idPedidoEspelho_Totais;
                    nomeCliente = pedido_Totais.IdCli + " - " + ClienteDAO.Instance.GetNome(pedido_Totais.IdCli);
                    tipoEntrega = pedido_Totais.DescrTipoEntrega;
                    taxaPrazo   = pedido_Totais.TaxaPrazo;
                }

                lstParam.Add(new ReportParameter("Titulo", titulo));
                lstParam.Add(new ReportParameter("NomeCliente", nomeCliente));
                lstParam.Add(new ReportParameter("TipoEntrega", tipoEntrega));
                lstParam.Add(new ReportParameter("TaxaPrazo", taxaPrazo.ToString()));
                lstParam.Add(new ReportParameter("ExibirCusto", exibirCusto.ToString()));
                lstParam.Add(new ReportParameter("ExibirJuros", "false"));
                lstParam.Add(new ReportParameter("ExibirLinhaVermelhaSaida", "true"));

                List <MaterialItemProjeto> lstMaterial_Totais = MaterialItemProjetoDAO.Instance.GetForRptTotaisItens(idProjeto_Totais,
                                                                                                                     idOrcamento_Totais, idPedido_Totais, idPedidoEspelho_Totais);

                report.DataSources.Add(new ReportDataSource("MaterialItemProjeto", lstMaterial_Totais.ToArray()));
                break;

            case "ImpressaoModeloProjeto":
                report.ReportPath = "Relatorios/Projeto/rptImpressaoModeloProjeto.rdlc";

                ProjetoModelo projModelo = ProjetoModeloDAO.Instance.GetByCodigo(Request["projModeloCod"]);

                if (projModelo.IdGrupoModelo != (uint)UtilsProjeto.GrupoModelo.Outros)
                {
                    // Salva a imagem na memória, recupera os bytes e os salva na propriedade ImagemProjetoModelo.
                    // Chamado 50315 - o nome da imagem deve ser recuperado dentro do try para não retornar erro quando o mesmo for null.
                    try
                    {
                        var arquivo = System.IO.Path.Combine(Glass.Data.Helper.Utils.ModelosProjetoPath(Context), projModelo.NomeFigura);
                        if (System.IO.File.Exists(arquivo))
                        {
                            using (var image = new Bitmap(arquivo))
                                using (var ms = new System.IO.MemoryStream())
                                {
                                    image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                                    projModelo.ImagemProjetoModelo = ms.ToArray();
                                }
                        }
                    }
                    catch { }
                }

                report.DataSources.Add(new ReportDataSource("ProjetoModelo", new ProjetoModelo[] { projModelo }));

                PecaProjetoModelo[] pecasModelo = PecaProjetoModeloDAO.Instance.GetByModelo(projModelo.IdProjetoModelo).ToArray();
                report.DataSources.Add(new ReportDataSource("PecaProjetoModelo", pecasModelo));

                MaterialProjetoModelo[] materialModelo = MaterialProjetoModeloDAO.Instance.GetByProjetoModelo(projModelo.IdProjetoModelo, null).ToArray();
                report.DataSources.Add(new ReportDataSource("MaterialProjetoModelo", materialModelo));

                MedidaProjetoModelo[] medidaModelo = MedidaProjetoModeloDAO.Instance.GetByProjetoModelo(projModelo.IdProjetoModelo, false).ToArray();
                report.DataSources.Add(new ReportDataSource("MedidaProjetoModelo", medidaModelo));

                Imagem[] imagensPecasModelo = ImagemDAO.Instance.GetPecasModelo(projModelo.IdProjetoModelo);
                report.DataSources.Add(new ReportDataSource("Imagem", imagensPecasModelo));
                break;

            case "LstModeloProjeto":
                report.ReportPath = "Relatorios/Projeto/rptLstModeloProjeto.rdlc";
                Imagem[] imagensProjModelo = ImagemDAO.Instance.GetProjetosModelo(Request["cod"], Request["desc"],
                                                                                  Glass.Conversoes.StrParaUint(Request["grupo"]), Request["situacao"].StrParaInt());
                report.DataSources.Add(new ReportDataSource("Imagem", imagensProjModelo));
                break;
            }

            // 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);
        }
Exemplo n.º 12
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)
        {
            var relatorioDinamicoFluxo = Microsoft.Practices.ServiceLocation.ServiceLocator
                                         .Current.GetInstance <Glass.Global.Negocios.IRelatorioDinamicoFluxo>();

            // Recupera dados do relatório dinâmico
            var relatorioDinamico = relatorioDinamicoFluxo.ObterRelatorioDinamico(int.Parse(PageRequest["id"]));

            // Define o caminho do relatório
            report.ReportPath = string.Format("Upload/RelatorioDinamico/{0}.rdlc", relatorioDinamico.IdRelatorioDinamico);

            // Monta os filtros da consulta
            var filtros = new List <Tuple <Glass.Global.Negocios.Entidades.RelatorioDinamicoFiltro, string> >();

            foreach (var key in PageRequest.QueryString.AllKeys)
            {
                if (key == null || key.IndexOf('_') <= 0)
                {
                    continue;
                }

                // Pega o id do RelatorioDinamicoFiltro e o recupera em seguida
                var idRelatorioDinamicoFiltro = key.Split('_')[1];
                var filtro = relatorioDinamico.Filtros.Where(f => f.IdRelatorioDinamicoFiltro == idRelatorioDinamicoFiltro.StrParaInt()).FirstOrDefault();

                filtros.Add(new Tuple <Glass.Global.Negocios.Entidades.RelatorioDinamicoFiltro, string>(filtro, PageRequest[key]));
            }

            int count;

            // Recupera os dados a serem preenchidos no relatório
            var lista = relatorioDinamicoFluxo.PesquisarListaDinamica(relatorioDinamico.IdRelatorioDinamico, filtros, 0, int.MaxValue, out count);

            System.Data.DataTable dt = new System.Data.DataTable();

            // Cria as colunas da grid
            foreach (var campo in lista.First().Keys)
            {
                dt.Columns.Add(campo.RemoverAcentosEspacos(), typeof(string));
            }

            foreach (var item in lista)
            {
                var dr = dt.NewRow();

                foreach (var campo in item)
                {
                    dr[campo.Key] = campo.Value;
                }

                dt.Rows.Add(dr);
            }

            dt.AcceptChanges();

            report.DataSources.Add(new ReportDataSource("ListaRegistros", dt));

            // Recupera parâmetro de agrupamento
            var agrupamento = filtros.Where(f => f.Item1.TipoControle == Data.Model.TipoControle.Agrupamento).FirstOrDefault();

            var criterio = string.Join("    ", filtros.OrderBy(f => f.Item1.NumSeq)
                                       .Where(f => f.Item2 != "" && f.Item2 != "|")
                                       .Select(f => f.Item1.NomeFiltro + ": " + f.Item2.Replace("|", " "))
                                       );

            // Define parâmetro padrões
            lstParam.Add(new ReportParameter("AgruparPor", agrupamento != null ? agrupamento.Item2 : "."));
            lstParam.Add(new ReportParameter("Criterio", criterio));
            lstParam.Add(new ReportParameter("NomeRelatorio", relatorioDinamico.NomeRelatorio));
            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(PageRequest)));
            lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome, true)));
            lstParam.Add(new ReportParameter("CorRodape", "DimGray"));

            return(null);
        }
Exemplo n.º 13
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)
        {
            TipoRelatorioPedido tipo = !String.IsNullOrEmpty(Request["tipo"]) ? (TipoRelatorioPedido)Glass.Conversoes.StrParaInt(Request["tipo"]) : TipoRelatorioPedido.Normal;

            Glass.Data.Model.Pedido[] pedido = PedidoDAO.Instance.GetForRpt(Request["idPedido"], tipo == TipoRelatorioPedido.Pcp, login);
            uint idLoja = pedido[0].IdLoja;

            List <ProdutosPedido> prodPedido  = new List <ProdutosPedido>();
            List <ParcelasPedido> parcPedido  = new List <ParcelasPedido>();
            List <AmbientePedido> ambPedido   = new List <AmbientePedido>();
            List <TextoPedido>    textoPedido = new List <TextoPedido>();

            report.ReportPath = PedidoConfig.RelatorioPedido.NomeArquivoRelatorio(idLoja).Item1;

            Dictionary <int, List <string> > parametros = new Dictionary <int, List <string> >();

            for (int i = 0; i < 20; i++)
            {
                parametros.Add(i, new List <string>());
            }

            for (int i = 0; i < pedido.Length; i++)
            {
                parcPedido.AddRange(ParcelasPedidoDAO.Instance.GetForRpt(pedido[i].IdPedido));
                ambPedido.AddRange(AmbientePedidoDAO.Instance.GetByPedido(pedido[i].IdPedido, tipo == TipoRelatorioPedido.Pcp));
                prodPedido.AddRange(PedidoConfig.RelatorioPedido.ExibirItensProdutosPedido ?
                                    ProdutosPedidoDAO.Instance.GetForRpt(pedido[i].IdPedido, tipo == TipoRelatorioPedido.Pcp) :
                                    ProdutosPedidoDAO.Instance.GetForRptAmbiente(pedido[i].IdPedido,
                                                                                 tipo == TipoRelatorioPedido.Pcp));

                textoPedido.AddRange(TextoPedidoDAO.Instance.GetByPedido(pedido[i].IdPedido));

                float taxaEntrega = 0f;
                if (PedidoConfig.Pedido_FastDelivery.FastDelivery && pedido[i].FastDelivery)
                {
                    taxaEntrega = PedidoConfig.Pedido_FastDelivery.TaxaFastDelivery;
                }

                string separador    = " - ";
                string enderecoLoja = pedido[i].RptEnderecoLoja + pedido[i].RptComplLoja + separador + pedido[i].RptBairroLoja + separador +
                                      pedido[i].RptTelefoneLoja + separador + "CEP: " + pedido[i].RptCepLoja;

                parametros[0].Add(taxaEntrega.ToString() + "%");
                parametros[1].Add(pedido[i].IdPedido.ToString());
                parametros[2].Add(String.IsNullOrEmpty(pedido[i].NomeFunc) ? "." : pedido[i].NomeFunc);
                parametros[3].Add(pedido[i].DataPedido.ToString("dd/MM/yyyy"));
                parametros[4].Add(String.IsNullOrEmpty(pedido[i].FoneFaxLoja) ? "." : pedido[i].FoneFaxLoja);
                parametros[5].Add(String.IsNullOrEmpty(pedido[i].RptNomeLoja) ? "." : pedido[i].RptNomeLoja);
                parametros[6].Add(String.IsNullOrEmpty(pedido[i].DadosLoja) ? "." : pedido[i].DadosLoja);
                parametros[7].Add(pedido[i].DataCad.ToString("dd/MM/yyyy"));
                parametros[8].Add(pedido[i].DescrSituacaoPedido);
                parametros[9].Add(String.IsNullOrEmpty(pedido[i].EmailLoja) ? "." : pedido[i].EmailLoja);
                parametros[10].Add(String.IsNullOrEmpty(pedido[i].RptTelefoneLoja) ? "." : pedido[i].RptTelefoneLoja);
                parametros[11].Add(String.IsNullOrEmpty(enderecoLoja) ? "." : enderecoLoja);
                parametros[12].Add(String.IsNullOrEmpty(pedido[i].DataEntregaString) ? "." : pedido[i].DataEntregaString);
                parametros[13].Add((pedido[i].TipoPedido == (int)Glass.Data.Model.Pedido.TipoPedidoEnum.MaoDeObra).ToString());
                parametros[14].Add(String.IsNullOrEmpty(pedido[i].CodCliente) ? "." : pedido[i].CodCliente);
                parametros[15].Add(!String.IsNullOrEmpty(pedido[i].CodCliente) ? pedido[i].CodCliente.ToString() : ".");
                parametros[16].Add(!PedidoConfig.LiberarPedido ? ContasReceberDAO.Instance.GetTotalDescontoParcelas(pedido[i].IdPedido).ToString() : ".");
                parametros[17].Add(!String.IsNullOrEmpty(pedido[i].Obs) ? "Obs: " + pedido[i].Obs : ".");

                string codRota   = string.Empty;
                string descrRota = string.Empty;

                // Só exibe o código da rota se não for tipo de entrega balcão
                if (PedidoDAO.Instance.ObtemTipoEntrega(pedido[i].IdPedido) != (uint)Glass.Data.Model.Pedido.TipoEntregaPedido.Balcao)
                {
                    codRota   = RotaDAO.Instance.ObtemCodRota(pedido[i].IdCli);
                    descrRota = RotaDAO.Instance.ObtemDescrRota(pedido[i].IdCli);
                }

                parametros[18].Add(!String.IsNullOrEmpty(codRota) ? codRota : ".");
                parametros[19].Add(!String.IsNullOrEmpty(descrRota) ? descrRota : ".");

                // Indica se o pedido é de cliente
                pedido[i].RptIsCliente = login != null ? login.IdCliente > 0 : false;
            }

            var prodPedidoRpt = new List <ProdutosPedido>();

            foreach (var item in prodPedido.Where(f => f.IdProdPedParent == null))
            {
                prodPedidoRpt.Add(item);

                foreach (var itemFlilho in prodPedido.Where(f => f.IdProdPedParent == item.IdProdPed))
                {
                    prodPedidoRpt.Add(itemFlilho);
                    prodPedidoRpt.AddRange(prodPedido.Where(f => f.IdProdPedParent == itemFlilho.IdProdPed));
                }
            }

            if (!IsRelOtimizado((int)idLoja))
            {
                report.DataSources.Add(new ReportDataSource("Pedido", pedido));
                report.DataSources.Add(new ReportDataSource("ProdutosPedido", prodPedidoRpt));
            }
            else
            {
                report.DataSources.Add(new ReportDataSource("PedidoRpt", PedidoRptDAL.Instance.CopiaLista(pedido, PedidoRpt.TipoConstrutor.RelatorioPedido, false, login)));
                report.DataSources.Add(new ReportDataSource("ProdutosPedidoRpt", ProdutosPedidoRptDAL.Instance.CopiaLista(prodPedidoRpt.ToArray())));
            }

            lstParam.Add(new ReportParameter("LojaCalculaICMSPedido", LojaDAO.Instance.ObtemCalculaIcmsStPedido(null, idLoja).ToString()));
            lstParam.Add(new ReportParameter("LojaCalculaIPIPedido", LojaDAO.Instance.ObtemCalculaIpiPedido(null, idLoja).ToString()));
            lstParam.Add(new ReportParameter("TemProdutoLamComposicao", pedido[0].TemProdutoLamComposicao.ToString()));

            report.DataSources.Add(new ReportDataSource("ParcelasPedido", parcPedido));
            report.DataSources.Add(new ReportDataSource("AmbientePedido", ambPedido));
            report.DataSources.Add(new ReportDataSource("TextoPedido", textoPedido));

            lstParam.Add(new ReportParameter("TaxaEntrega", parametros[0].ToArray()));
            lstParam.Add(new ReportParameter("AgruparBeneficiamentos", PedidoConfig.RelatorioPedido.AgruparBenefRelatorio.ToString()));
            lstParam.Add(new ReportParameter("ExibirM2Calc", PedidoConfig.RelatorioPedido.ExibirM2CalcRelatorio.ToString()));
            lstParam.Add(new ReportParameter("Cabecalho_DataLocal", LojaDAO.Instance.GetCidade(pedido[0].IdLoja, false) + ", " + Formatacoes.DataExtenso(pedido[0].DataPedido)));
            lstParam.Add(new ReportParameter("Cabecalho_IdPedido", parametros[1].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_NomeFunc", parametros[2].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DataPedido", parametros[3].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_FoneFaxLoja", parametros[4].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_NomeLoja", parametros[5].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DadosLoja", parametros[6].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DataCad", parametros[7].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_Situacao", parametros[8].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_EmailLoja", parametros[9].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_TelefoneLoja", parametros[10].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_EnderecoLoja", parametros[11].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DataEntrega", parametros[12].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_MaoDeObra", parametros[13].ToArray()));
            lstParam.Add(new ReportParameter("ExibirComissao", (!PedidoConfig.Comissao.UsarComissionadoCliente && false).ToString())); // Não exibe a comissão em nenhum relatório
            lstParam.Add(new ReportParameter("ImpressoPor", login != null ? login.Nome : string.Empty));
            lstParam.Add(new ReportParameter("TipoRpt", ((int)tipo).ToString()));
            lstParam.Add(new ReportParameter("FormatTotM", Geral.GetFormatTotM()));
            lstParam.Add(new ReportParameter("Cabecalho_CodCliente", parametros[14].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_NumPedCli", parametros[15].ToArray()));
            lstParam.Add(new ReportParameter("DescontoParcelas", parametros[16].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_Obs", parametros[17].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_CpfCnpjLoja", LojaDAO.Instance.ObtemCnpj(idLoja)));
            lstParam.Add(new ReportParameter("Cabecalho_InscEstLoja", LojaDAO.Instance.ObtemInscEst(idLoja)));
            lstParam.Add(new ReportParameter("Cabecalho_Rota", parametros[18].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DescrRota", parametros[19].ToArray()));
            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(PageRequest, idLoja)));

            return(null);
        }
Exemplo n.º 14
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);
        }
Exemplo n.º 15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.UserAgent != null && (Request.UserAgent.IndexOf("AppleWebKit") > 0 || Request.UserAgent.IndexOf("Unknown") > 0 || Request.UserAgent.IndexOf("Chrome") > 0))
            {
                Request.Browser.Adapters.Clear();
            }

            //Esconde a opção de controle de usuario caso for Parceiro
            if (UserInfo.GetUserInfo == null || UserInfo.GetUserInfo.CodUser == 0)
            {
                lnkControleUsuario.Visible = false;
            }

            // Altera o título da página
            if (!Page.Title.Contains(TITULO_INICIO))
            {
                lblTitulo.Text = Page.Title;
                Page.Title     = TITULO_INICIO + Page.Title;
            }

            lblTitulo.Text +=
                string.Format("{0}",
                              ControleSistema.AmbienteTeste ?
                              " (AMBIENTE TESTE)" :
                              string.Empty);

            Page.Title +=
                string.Format("{0}",
                              ControleSistema.AmbienteTeste ?
                              " (AMBIENTE TESTE)" :
                              string.Empty);

            // Inicia as threads de controle do sistema, se necessário
            if (!IsPostBack && Page.User.Identity.IsAuthenticated)
            {
                Threads.Instance.IniciarThreads(HttpContext.Current);
            }

            // Esconde os itens da tela em caso de popup
            if (IsPopup())
            {
                Page.ClientScript.RegisterStartupScript(GetType(), "popup", "hidePopup();", true);
            }

            #region Atualiza acesso e valida login

            try
            {
                // Salva numa variável Application o usuário logado, ou atualiza seu último acesso
                UserInfo.SetActivity();
            }
            catch { }

            LoginUsuario login = null;

            try
            {
                login = UserInfo.GetUserInfo;
            }
            catch { }

            if (login == null || (login.CodUser == 0 && login.IdCliente == 0))
            {
                Response.Redirect(PaginaLogin);
                return;
            }

            imgCliente.ImageUrl = Logotipo.GetLogoVirtualPath();

            if (IsPopup())
            {
                return;
            }

            lblUsuario.Text =
                ControleSistema.AmbienteTeste ?
                "AMBIENTE TESTE" :
                string.Format("Bem vindo(a), {0}", login.Nome);

            if (LojaDAO.Instance.GetCount() > 1)
            {
                lblUsuario.Text += "<br/>" + LojaDAO.Instance.GetNome(login.IdLoja);
            }

            /* Chamado 53668. */
            if (Geral.SistemaLite)
            {
                lblTelSuporte.Visible = false;
                lblCoord.Visible      = false;
            }
            else if (!login.IsAdministrador)
            {
                lblCoord.Visible = false;
            }

            DateTime dataTrabalho = FuncionarioDAO.Instance.ObtemDataAtraso(login.CodUser);
            lblDataTrabalho.Text = dataTrabalho != DateTime.Now ? " (data de trabalho: " + dataTrabalho.ToString("dd/MM/yyyy") + ")" : "";

            // Verifica se há novas mensagens e quantas são
            bool msgNova = VerificarMensagensNaoLidas();
            lnkMensagens.Visible         = !msgNova;
            lnkMensagensNaoLidas.Visible = msgNova;

            try
            {
                // Chamado 13112.
                // É necessário informar ao funcionário, financeiro recebimento, quantos pedidos estão aguardando sua confirmação/finalização.
                VerificarPedidosAguardandoFinanceiro();

                VerificarEstoqueMinimo();

                VerificarAvaliacaoPendente();
            }
            catch (Exception ex)
            {
                ErroDAO.Instance.InserirFromException("Layout.master.cs - Page_Load", ex);
            }

            #endregion

            lnkVersao.Text = GetVersion();

            lnkControleUsuario.Visible = UserInfo.GetUserInfo.IsCliente ? false : FuncionarioDAO.Instance.ObtemHabilitarControleUsuarios(UserInfo.GetUserInfo.CodUser);
        }
Exemplo n.º 16
0
        public static byte[] GetBytesRelatorio(HttpContext context, uint idCte, bool preVisualizar, out Warning[] warnings, out string[] streamids,
                                               out string mimeType, out string encoding, out string extension)
        {
            var report   = new LocalReport();
            var lstParam = new List <ReportParameter>();

            var cte   = ConhecimentoTransporteDAO.Instance.GetElement(idCte);
            var dacte = CTeDAO.GetForDacte(context, cte.ChaveAcesso);

            var participante = ParticipanteCteDAO.Instance.GetParticipanteByIdCte(cte.IdCte);
            var idLoja       = participante.Where(f => f.TipoParticipante == ParticipanteCte.TipoParticipanteEnum.Emitente).First().IdLoja;

            report.DataSources.Add(new ReportDataSource("CTe", new CTe[] { dacte }));

            var cteRod = DAL.CTe.ConhecimentoTransporteRodoviarioDAO.Instance.GetElement(idCte);

            if (cteRod != null && cteRod.Lotacao)
            {
                report.ReportPath = "Relatorios/CTe/rptDacteRetrato.rdlc";
            }
            else
            {
                report.ReportPath = "Relatorios/CTe/rptDacteRetratoFracionado.rdlc";
            }

            if (cte.TipoEmissao == (int)Glass.Data.Model.Cte.ConhecimentoTransporte.TipoEmissaoEnum.ContingenciaFsda)
            {
                report.ReportPath = report.ReportPath.Replace(".", "FS.");

                lstParam.Add(new ReportParameter("Cabecalho_DadosAdicionaisCte", dacte.DadosAdicionaisFs));
                lstParam.Add(new ReportParameter("Cabecalho_CodigoBarrasAdicionais", Utils.GetUrlSite(context) +
                                                 "/Handlers/Dacte.ashx?idCte=" + idCte + "&isCodigoBarras=true&dadosAdicionais=true"));
            }

            report.ReportPath = context.Server.MapPath("~/" + report.ReportPath);

            lstParam.Add(new ReportParameter("Producao", (dacte.TipoAmbiente == (int)Glass.Data.CTeUtils.ConfigCTe.TipoAmbienteCte.Producao && cte.Situacao != (int)ConhecimentoTransporte.SituacaoEnum.Cancelado && !preVisualizar).ToString().ToLower()));

            // Parâmetros para o cabeçalho/rodapé do relatório
            lstParam.Add(new ReportParameter("Cabecalho_EnderecoEmit", dacte.EnderecoEmit != null ? dacte.EnderecoEmit : ""));
            lstParam.Add(new ReportParameter("Cabecalho_RazaoSocialEmit", dacte.RazaoSocialEmit != null ? dacte.RazaoSocialEmit : ""));
            lstParam.Add(new ReportParameter("Cabecalho_Modelo", dacte.Modelo != null ? dacte.Modelo : ""));
            lstParam.Add(new ReportParameter("Cabecalho_SerieCte", dacte.SerieCte != null ? dacte.SerieCte : ""));
            lstParam.Add(new ReportParameter("Cabecalho_NumeroCte", dacte.NumeroCte != null ? dacte.NumeroCte : ""));
            lstParam.Add(new ReportParameter("Cabecalho_DHEmissao", dacte.DHEmissao != null ? dacte.DHEmissao : ""));
            lstParam.Add(new ReportParameter("Cabecalho_SuframaDest", dacte.InscSuframa != null ? dacte.InscSuframa : ""));
            lstParam.Add(new ReportParameter("Cabecalho_TipoCTe", dacte.TipoCte != null ? dacte.TipoCte : ""));
            lstParam.Add(new ReportParameter("Cabecalho_TipoServico", dacte.TipoServico != null ? dacte.TipoServico : ""));
            lstParam.Add(new ReportParameter("Cabecalho_TomadorServico", dacte.TipoTomador == "0" ? "Remetente" : (dacte.TipoTomador == "1" ? "Expedidor"
                : (dacte.TipoTomador == "2" ? "Recebedor" : "Destinatário"))));
            lstParam.Add(new ReportParameter("Cabecalho_NatOperacao", dacte.NatOperacao != null ? dacte.NatOperacao : ""));
            lstParam.Add(new ReportParameter("Cabecalho_ChaveAcesso", dacte.ChaveAcesso != null ? dacte.ChaveAcesso : ""));
            lstParam.Add(new ReportParameter("Cabecalho_CodigoBarras", Utils.GetUrlSite(context) +
                                             "/Handlers/Dacte.ashx?idCte=" + idCte + "&isCodigoBarras=true"));
            lstParam.Add(new ReportParameter("Cabecalho_ProtAutorizacao", String.IsNullOrEmpty(dacte.ProtocoloAutorizacao) ? "." : dacte.ProtocoloAutorizacao));
            lstParam.Add(new ReportParameter("Cabecalho_OrigemPrestacao", String.IsNullOrEmpty(dacte.OrigemPrestacao) ? "." : dacte.OrigemPrestacao));
            lstParam.Add(new ReportParameter("Cabecalho_DestinoPrestacao", String.IsNullOrEmpty(dacte.DestinoPrestacao) ? "." : dacte.DestinoPrestacao));
            lstParam.Add(new ReportParameter("Cabecalho_CnpjIEEmit", dacte.CnpjCpfEmitente + " - " + dacte.InscEstEmitente));

            //Trecho responsável pelo preenchimento das propriedades da classe que popula
            //a tabela de componentes do valor da prestação do Cte replicando os dados entre as colunas
            //e posteriormente entre as linhas
            #region Tabela Componentes

            var listaComponentes = new List <LinhaComponenteValor>();

            if (dacte.ListaComponentes != null && dacte.ListaComponentes.Count > 0)
            {
                int count = 0;

                foreach (var tcv in dacte.ListaComponentes)
                {
                    if (count == 0)
                    {
                        listaComponentes.Add(new LinhaComponenteValor());
                        listaComponentes[listaComponentes.Count() - 1].Nome1  = tcv.NomeComponente.ToString().ToUpper();
                        listaComponentes[listaComponentes.Count() - 1].Valor1 = tcv.ValorComponente.ToString().ToUpper();
                        count++;
                        continue;
                    }
                    else if (count == 1)
                    {
                        listaComponentes[listaComponentes.Count() - 1].Nome2  = tcv.NomeComponente.ToString().ToUpper();
                        listaComponentes[listaComponentes.Count() - 1].Valor2 = tcv.ValorComponente.ToString().ToUpper();
                        count++;
                        continue;
                    }
                    else if (count == 2)
                    {
                        listaComponentes[listaComponentes.Count() - 1].Nome3  = tcv.NomeComponente.ToString().ToUpper();
                        listaComponentes[listaComponentes.Count() - 1].Valor3 = tcv.ValorComponente.ToString().ToUpper();
                        count++;
                        continue;
                    }
                    else if (count == 3)
                    {
                        listaComponentes[listaComponentes.Count() - 1].Nome4  = tcv.NomeComponente.ToString().ToUpper();
                        listaComponentes[listaComponentes.Count() - 1].Valor4 = tcv.ValorComponente.ToString().ToUpper();
                        count = 0;
                        continue;
                    }
                }
            }

            #endregion

            //Trecho responsável pelo preenchimento das propriedades da classe que popula
            //a tabela de informações da carga do cte replicando os dados entre as colunas
            //e posteriormente entre as linhas
            #region Tabela InfoCarga

            var listaInfoCarga = new List <LinhaInfCarga>();

            if (dacte.ListaInfoCargaCte.Count > 0)
            {
                int count = 0;

                foreach (var infCarga in dacte.ListaInfoCargaCte)
                {
                    if (count == 0)
                    {
                        listaInfoCarga.Add(new LinhaInfCarga());
                        listaInfoCarga[listaInfoCarga.Count() - 1].Quantidade1    = infCarga.Quantidade.ToString().ToUpper();
                        listaInfoCarga[listaInfoCarga.Count() - 1].TipoMedida1    = infCarga.TipoMedida.ToString().ToUpper();
                        listaInfoCarga[listaInfoCarga.Count() - 1].UnidadeMedida1 = ((InfoCargaCte.TipoUnidadeEnum)infCarga.TipoUnidade).Translate().Format().ToUpper();
                        count++;
                        continue;
                    }
                    else if (count == 1)
                    {
                        listaInfoCarga[listaInfoCarga.Count() - 1].Quantidade2    = infCarga.Quantidade.ToString().ToUpper();
                        listaInfoCarga[listaInfoCarga.Count() - 1].TipoMedida2    = infCarga.TipoMedida.ToString().ToUpper();
                        listaInfoCarga[listaInfoCarga.Count() - 1].UnidadeMedida2 = ((InfoCargaCte.TipoUnidadeEnum)infCarga.TipoUnidade).Translate().Format().ToUpper();
                        count++;
                        continue;
                    }
                    else if (count == 2)
                    {
                        listaInfoCarga[listaInfoCarga.Count() - 1].Quantidade3    = infCarga.Quantidade.ToString().ToUpper();
                        listaInfoCarga[listaInfoCarga.Count() - 1].TipoMedida3    = infCarga.TipoMedida.ToString().ToUpper();
                        listaInfoCarga[listaInfoCarga.Count() - 1].UnidadeMedida3 = ((InfoCargaCte.TipoUnidadeEnum)infCarga.TipoUnidade).Translate().Format().ToUpper();
                        count = 0;
                        continue;
                    }
                }
            }

            #endregion

            //Trecho responsável pelo preenchimento das propriedades da classe que popula
            //a tabela de documentos originários do cte replicando os dados entre as colunas
            //e posteriormente entre as linhas
            #region Tabela Documentos Originários

            var listaDocsOriginarios = new List <LinhaDocumentosOriginarios>();

            if (dacte.ListaDocumentosOriginarios != null && dacte.ListaDocumentosOriginarios.Count > 0)
            {
                int count = 0;

                foreach (var docsOriginarios in dacte.ListaDocumentosOriginarios)
                {
                    if (count == 0)
                    {
                        listaDocsOriginarios.Add(new LinhaDocumentosOriginarios());
                        listaDocsOriginarios[listaDocsOriginarios.Count() - 1].DocEmitenteNf1 = docsOriginarios.DocEmitenteNf != null?docsOriginarios.DocEmitenteNf.ToString().ToUpper() : "";

                        listaDocsOriginarios[listaDocsOriginarios.Count() - 1].TipoDoc1 = docsOriginarios.TipoDoc != null?docsOriginarios.TipoDoc.ToString().ToUpper() : "";

                        listaDocsOriginarios[listaDocsOriginarios.Count() - 1].Serie1 = docsOriginarios.Serie != null?docsOriginarios.Serie.ToString().ToUpper() : "";

                        listaDocsOriginarios[listaDocsOriginarios.Count() - 1].NumeroDoc1 = docsOriginarios.NumeroDoc != null?docsOriginarios.NumeroDoc.ToString().ToUpper() : "";

                        count++;
                        continue;
                    }
                    else if (count == 1)
                    {
                        listaDocsOriginarios[listaDocsOriginarios.Count() - 1].DocEmitenteNf2 = docsOriginarios.DocEmitenteNf != null?docsOriginarios.DocEmitenteNf.ToString().ToUpper() : "";

                        listaDocsOriginarios[listaDocsOriginarios.Count() - 1].TipoDoc2 = docsOriginarios.TipoDoc != null?docsOriginarios.TipoDoc.ToString().ToUpper() : "";

                        listaDocsOriginarios[listaDocsOriginarios.Count() - 1].Serie2 = docsOriginarios.Serie != null?docsOriginarios.Serie.ToString().ToUpper() : "";

                        listaDocsOriginarios[listaDocsOriginarios.Count() - 1].NumeroDoc2 = docsOriginarios.NumeroDoc != null?docsOriginarios.NumeroDoc.ToString().ToUpper() : "";

                        count = 0;
                        continue;
                    }
                }
            }

            #endregion

            //Trecho responsável pelo preenchimento das propriedades da classe que popula
            //a tabela de identificação dos lacres em trânsito replicando os dados entre as colunas
            //e posteriormente entre as linhas
            #region Tabela Lacres
            var listaLacres = new List <LinhaLacreCte>();

            if (dacte.ListaNumeroLacre != null && dacte.ListaNumeroLacre.Count > 0)
            {
                int count = 0;

                foreach (var lacres in dacte.ListaNumeroLacre)
                {
                    if (count == 0)
                    {
                        listaLacres.Add(new LinhaLacreCte());
                        listaLacres[listaLacres.Count() - 1].NumLacre1 = lacres.NumeroLacre.ToString().ToUpper();
                        count++;
                        continue;
                    }
                    else if (count == 1)
                    {
                        listaLacres[listaLacres.Count() - 1].NumLacre2 = lacres.NumeroLacre.ToString().ToUpper();
                        count++;
                        continue;
                    }
                    else if (count == 2)
                    {
                        listaLacres[listaLacres.Count() - 1].NumLacre3 = lacres.NumeroLacre.ToString().ToUpper();
                        count = 0;
                        continue;
                    }
                }
            }

            #endregion

            report.DataSources.Add(new ReportDataSource("LinhaComponenteValor", listaComponentes));
            report.DataSources.Add(new ReportDataSource("LinhaInfoCarga", listaInfoCarga));
            report.DataSources.Add(new ReportDataSource("LinhaDocumentosOriginarios", listaDocsOriginarios));
            report.DataSources.Add(new ReportDataSource("LinhaLacreCte", listaLacres));

            #region tomador


            #endregion

            //lstParam.Add(new ReportParameter("ProdutoPredominante", dacte.ProdutoPredominante));
            //lstParam.Add(new ReportParameter("OutrasCaractCarga", dacte.OutCarctCarga));
            //lstParam.Add(new ReportParameter("ValorTotalMercadoria", dacte.Valortotalme));



            //lstParam.Add(new ReportParameter("Logotipo", empresa != ControleSistema.ClienteSistema.CenterBox &&
            //    empresa != ControleSistema.ClienteSistema.Vipal ? Utils.GetReportLogoColor(context.Request, idLoja) :
            //    Utils.GetReportLogoColor(context.Request, idLoja).Replace("Color", "Nf")));

            #region LogoTipo

            var logotipo = Logotipo.GetReportLogoColor(context.Request, idLoja.GetValueOrDefault(0));

            report.EnableExternalImages = true;
            lstParam.Add(new ReportParameter("Logotipo", logotipo));

            #endregion

            // Atribui parâmetros ao relatório
            report.SetParameters(lstParam);

            return(report.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings));
        }
Exemplo n.º 17
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);
        }
Exemplo n.º 18
0
        public static byte[] GetBytesRelatorio(HttpContext context, uint[] idsNf, bool preVisualizar, out Warning[] warnings, out string[] streamids,
                                               out string mimeType, out string encoding, out string extension)
        {
            var report   = new LocalReport();
            var lstParam = new List <ReportParameter>();

            foreach (var idNf in idsNf)
            {
                var nf          = NotaFiscalDAO.Instance.GetElement(idNf);
                var danfe       = NFeDAO.Instance.GetForDanfe(context, nf.ChaveAcesso);
                var produtosNFe = ProdutosNFeDAO.Instance.GetForDanfe(context, nf.ChaveAcesso);
                var idLoja      = nf.IdLoja.Value;

                report.DataSources.Add(new ReportDataSource("NFe", new NFe[] { danfe }));
                report.DataSources.Add(new ReportDataSource("ProdutosNFe", produtosNFe));

                #region NF-e

                #region Report Path

                //report.ReportPath = FiscalConfig.NotaFiscalConfig.CaminhoDANFE((int)nf.IdLoja.GetValueOrDefault());

                #endregion

                if (nf.IdLoja > 0)
                {
                    danfe.EnderecoEmit += " " + LojaDAO.Instance.GetElementByPrimaryKey(nf.IdLoja.Value).EmailFiscal;
                }
                danfe.EmailFiscal += " " + LojaDAO.Instance.GetElementByPrimaryKey(nf.IdLoja.Value).EmailFiscal;

                #region Parametros

                if (nf.FormaEmissao == (int)NotaFiscal.TipoEmissao.ContingenciaFSDA)
                {
                    report.ReportPath = report.ReportPath.Replace(".", "FS.");

                    lstParam.Add(new ReportParameter("Cabecalho_DadosAdicionaisNfe", danfe.DadosAdicionaisFs));
                    lstParam.Add(new ReportParameter("Cabecalho_CodigoBarrasAdicionais", Utils.GetUrlSite(context) +
                                                     "/Handlers/Danfe.ashx?idNf=" + idNf + "&isCodigoBarras=true&dadosAdicionais=true"));
                }

                // Verifica apenas se a nota não é cancelada, pois a nota só muda para autorizada depois de enviar o email,
                // fazendo com que os clientes recebesse o DANFE dizendo que a nota "não é um documento fiscal válido"
                lstParam.Add(new ReportParameter("Producao", (danfe.TipoAmbiente == (int)ConfigNFe.TipoAmbienteNfe.Producao && nf.Situacao != (int)NotaFiscal.SituacaoEnum.Cancelada && !preVisualizar).ToString().ToLower()));

                lstParam.Add(new ReportParameter("ExibirNFCancelada",
                                                 (!preVisualizar && danfe.TipoAmbiente == (int)ConfigNFe.TipoAmbienteNfe.Producao &&
                                                  nf.Situacao == (int)NotaFiscal.SituacaoEnum.Cancelada).ToString().ToLower()));

                // Parâmetros para o cabeçalho/rodapé do relatório
                lstParam.Add(new ReportParameter("Cabecalho_NumeroNfe", danfe.NumeroNfe));
                lstParam.Add(new ReportParameter("Cabecalho_SerieNfe", danfe.SerieNfe));
                lstParam.Add(new ReportParameter("Cabecalho_RazaoSocialEmit", danfe.RazaoSocialEmit));
                lstParam.Add(new ReportParameter("Cabecalho_EnderecoEmit", danfe.EnderecoEmit));
                lstParam.Add(new ReportParameter("Cabecalho_TipoNfe", danfe.TipoNfe));
                lstParam.Add(new ReportParameter("Cabecalho_ChaveAcesso", danfe.ChaveAcesso));
                lstParam.Add(new ReportParameter("Cabecalho_NatOperacao", danfe.NatOperacao));
                lstParam.Add(new ReportParameter("Cabecalho_ProtAutorizacao", String.IsNullOrEmpty(danfe.ProtAutorizacao) ? "." : danfe.ProtAutorizacao));
                lstParam.Add(new ReportParameter("Cabecalho_InscEstEmit", danfe.InscEstEmit));
                lstParam.Add(new ReportParameter("Cabecalho_InscEstStEmit", danfe.InscEstStEmit));
                lstParam.Add(new ReportParameter("Cabecalho_CnpjEmit", danfe.CnpjEmit));

                if (report.ReportPath != "Relatorios/NFe/rptDanfeSemLogo.rdlc")
                {
                    lstParam.Add(new ReportParameter("Cabecalho_DestacarNFe", "false"));
                }

                #region Código de barras

                /* Chamado 18187. */
                if (FiscalConfig.CorrecaoGeracaoCodigoBarrasDanfe)
                {
                    var url = Utils.GetFullUrl(context, "/Handlers/Danfe.ashx?idNf=" + idNf + "&isCodigoBarras=true");
                    var uri = new Uri(url);
                    lstParam.Add(new ReportParameter("Cabecalho_CodigoBarras",
                                                     string.Format("{0}://localhost:{1}{2}", uri.Scheme, uri.Port, uri.PathAndQuery)));
                }
                else
                {
                    lstParam.Add(new ReportParameter("Cabecalho_CodigoBarras", Utils.GetUrlSite(context) +
                                                     "/Handlers/Danfe.ashx?idNf=" + idNf + "&isCodigoBarras=true"));
                }

                #endregion

                lstParam.Add(new ReportParameter("Rodape_InformacoesCompl", danfe.InformacoesCompl));

                #endregion


                #endregion

                #region LogoTipo

                var logotipo = Logotipo.GetReportLogoNF(context.Request, idLoja);

                if (FiscalConfig.NotaFiscalConfig.EsconderLogotipoDANFEComLogo)
                {
                    logotipo = ".";
                }

                report.EnableExternalImages = true;
                lstParam.Add(new ReportParameter("Logotipo", logotipo));

                #endregion

                //Ajusta o caminho do report
                report.ReportPath = context.Server.MapPath("~/" + report.ReportPath);

                // Atribui parâmetros ao relatório
                report.SetParameters(lstParam);
            }

            return(report.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings));
        }
Exemplo n.º 19
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)
        {
            uint idLoja = 1;

            // Verifica qual relatório será chamado
            switch (Request["rel"])
            {
            case "NfTerceiros":
                report.ReportPath = "Relatorios/NFe/rptNFTerceiros.rdlc";
                NotaFiscal   nfTerc  = NotaFiscalDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(Request["idNf"]));
                ProdutosNf[] lstProd = ProdutosNfDAO.Instance.GetByNf(nfTerc.IdNf);

                foreach (ProdutosNf pnf in lstProd)
                {
                    pnf.Qtde = ProdutosNfDAO.Instance.ObtemQtdDanfe(pnf);
                }

                idLoja = nfTerc.IdLoja.Value;
                report.DataSources.Add(new ReportDataSource("NotaFiscal", new NotaFiscal[] { nfTerc }));
                report.DataSources.Add(new ReportDataSource("ProdutosNf", lstProd));
                lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome)));
                lstParam.Add(new ReportParameter("CorRodape", "DimGray"));
                break;

            case "LivroRegistro":

                string loja             = Request["loja"];
                string dataInicial      = Request["dataInicial"];
                string dataFinal        = Request["dataFinal"];
                string ultimoLancamento = Request["ultimoLancamento"];
                string termo            = Request["termo"];
                string numeroOrdem      = Request["numeroOrdem"];
                string localData        = Request["localData"];
                string contador         = Request["contador"];
                string funcionario      = Request["funcionario"];
                string tipo             = Request["tipo"];
                string exibeST          = Request["exibeST"];
                string exibeIPI         = Request["exibeIPI"];

                string mes = Request["mes"];
                string ano = Request["ano"];

                Contabilista cont = ContabilistaDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(contador));
                Funcionario  func = FuncionarioDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(funcionario));

                int  totalPaginas = int.MinValue;
                uint idNota       = 0;

                #region Entrada

                if (tipo == "1")
                {
                    var livro = LivroRegistroDAO.Instance.ObterDadosLivroRegistro(Glass.Conversoes.StrParaInt(loja));
                    livro.Periodo          = new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToShortDateString() + " a " + new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), DateTime.DaysInMonth(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes)), 23, 59, 059).ToShortDateString();
                    livro.UltimoLancamento = ultimoLancamento;
                    livro.LocalData        = localData;
                    livro.NumeroOrdem      = numeroOrdem;
                    livro.Termo            = termo;
                    livro.Responsavel      = func.Nome;
                    livro.CPFResponsavel   = func.Cpf;
                    livro.CargoResponsavel = func.Funcao;
                    livro.Contador         = cont.Nome;
                    livro.CPFContador      = cont.CpfCnpj;
                    livro.CRCContador      = cont.Crc;

                    List <ItemEntrada> Itens = ItemEntradaDAO.Instance.ObterItensEntrada(Glass.Conversoes.StrParaUint(loja), Glass.Conversoes.StrParaInt(mes),
                                                                                         Glass.Conversoes.StrParaInt(ano), bool.Parse(exibeST), bool.Parse(exibeIPI), login);

                    #region CST 20 Redução de Base de Cálculo

                    List <ItemEntrada> ItensCST20 = Itens.FindAll(delegate(ItemEntrada i) { return(i.CST == "20" && i.TipoImposto == "ICMS"); });

                    foreach (ItemEntrada i in ItensCST20)
                    {
                        float reducao = ProdutosNfDAO.Instance.ObtemPercentualReducaoBaseCalculo(i.IdProdNF);

                        ItemEntrada novo = new ItemEntrada();
                        novo.Aliquota              = 0;
                        novo.BaseCalculo           = (i.ValorContabil * Convert.ToDecimal(reducao)) / 100;
                        novo.CFOP                  = i.CFOP;
                        novo.CNPJEmitente          = i.CNPJEmitente;
                        novo.CodigoContabil        = i.CodigoContabil;
                        novo.CodigoEmitente        = i.CodigoEmitente;
                        novo.CodValorFiscal        = 2;
                        novo.CorLinha              = i.CorLinha;
                        novo.CST                   = i.CST;
                        novo.DataDocumento         = i.DataDocumento;
                        novo.DataEntrada           = i.DataEntrada;
                        novo.Especie               = i.Especie;
                        novo.ExibirDadosFornecedor = i.ExibirDadosFornecedor;
                        novo.IdNF                  = i.IdNF;
                        novo.IdProdNF              = i.IdProdNF;
                        novo.ImpostoCreditado      = 0;
                        novo.InscEstEmitente       = i.InscEstEmitente;
                        novo.NomeEmitente          = i.NomeEmitente;
                        novo.NumeroNota            = i.NumeroNota;
                        novo.NumeroPagina          = i.NumeroPagina;
                        novo.Observacao            = i.Observacao;
                        novo.SerieSubSerie         = i.SerieSubSerie;
                        novo.TipoImposto           = i.TipoImposto;
                        novo.UFOrigem              = i.UFOrigem;
                        novo.ValorContabil         = 0;

                        Itens.Add(novo);
                    }

                    Itens.Sort(delegate(ItemEntrada p1, ItemEntrada p2)
                    {
                        int ret = p1.DataEntrada.ToShortDateString().CompareTo(p2.DataEntrada.ToShortDateString());

                        if (ret == 0)
                        {
                            ret = p1.NumeroNota.CompareTo(p2.NumeroNota);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.TipoImposto, p2.TipoImposto);
                        }

                        if (ret == 0)
                        {
                            ret = p1.CodValorFiscal.CompareTo(p2.CodValorFiscal);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.CFOP, p2.CFOP);
                        }

                        return(ret);
                    });

                    #endregion

                    #region CST 70 Redução de Base de Cálculo

                    List <ItemEntrada> ItensCST70 = Itens.FindAll(delegate(ItemEntrada i) { return(i.CST == "70" && i.TipoImposto == "ICMS" && i.CodValorFiscal == 1); });

                    foreach (ItemEntrada i in ItensCST70)
                    {
                        ProdutosNf prod = ProdutosNfDAO.Instance.GetElement(i.IdProdNF);

                        ItemEntrada novo = new ItemEntrada();
                        novo.Aliquota              = 0;
                        novo.BaseCalculo           = prod != null ? prod.BcIcms : i.BaseCalculo;        // (i.ValorContabil * Convert.ToDecimal(prod.PercRedBcIcms)) / 100;
                        novo.BaseCalculoST         = prod != null ? prod.BcIcmsSt : i.BaseCalculoST;    //(i.ValorContabil + (i.ValorContabil * (Convert.ToDecimal(prod.Mva) / 100))) * (Convert.ToDecimal(prod.PercRedBcIcmsSt) / 100);
                        novo.SubTributaria         = prod != null ? prod.ValorIcmsSt : i.SubTributaria; //Math.Round((prod.BcIcmsSt * (decimal)(prod.AliqIcmsSt / 100)) - (prod.ValorIcms > 0 ? prod.ValorIcms : ((prod.Total - prod.ValorDesconto) * (decimal)(prod.AliqIcms / 100))), 2);
                        novo.CFOP                  = i.CFOP;
                        novo.CNPJEmitente          = i.CNPJEmitente;
                        novo.CodigoContabil        = i.CodigoContabil;
                        novo.CodigoEmitente        = i.CodigoEmitente;
                        novo.CodValorFiscal        = 2;
                        novo.CorLinha              = i.CorLinha;
                        novo.CST                   = i.CST;
                        novo.DataDocumento         = i.DataDocumento;
                        novo.DataEntrada           = i.DataEntrada;
                        novo.Especie               = i.Especie;
                        novo.ExibirDadosFornecedor = i.ExibirDadosFornecedor;
                        novo.IdNF                  = i.IdNF;
                        novo.IdProdNF              = i.IdProdNF;
                        novo.ImpostoCreditado      = 0;
                        novo.InscEstEmitente       = i.InscEstEmitente;
                        novo.NomeEmitente          = i.NomeEmitente;
                        novo.NumeroNota            = i.NumeroNota;
                        novo.NumeroPagina          = i.NumeroPagina;
                        novo.Observacao            = i.Observacao;
                        novo.SerieSubSerie         = i.SerieSubSerie;
                        novo.TipoImposto           = i.TipoImposto;
                        novo.UFOrigem              = i.UFOrigem;
                        novo.ValorContabil         = 0;

                        Itens.Add(novo);
                    }

                    Itens.Sort(delegate(ItemEntrada p1, ItemEntrada p2)
                    {
                        int ret = p1.DataEntrada.ToShortDateString().CompareTo(p2.DataEntrada.ToShortDateString());

                        if (ret == 0)
                        {
                            ret = p1.NumeroNota.CompareTo(p2.NumeroNota);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.TipoImposto, p2.TipoImposto);
                        }

                        if (ret == 0)
                        {
                            ret = p1.CodValorFiscal.CompareTo(p2.CodValorFiscal);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.CFOP, p2.CFOP);
                        }

                        return(ret);
                    });

                    #endregion

                    decimal v = 0;

                    foreach (ItemEntrada item in Itens)
                    {
                        v += item.ValorContabil;
                        List <ItemEntrada> itens = Itens.FindAll(delegate(ItemEntrada i) { return(i.NumeroNota == item.NumeroNota && i.CFOP == item.CFOP); });

                        if (itens.Count > 0)
                        {
                            for (int i = 1; i < itens.Count; i++)
                            {
                                itens[i].CorLinha = "White";

                                if (itens.FindAll(delegate(ItemEntrada itemEntrada) { return(item.TipoImposto == "ICMS"); }).Count > 0)
                                {
                                    if (itens[i].TipoImposto == "IPI")
                                    {
                                        itens[i].ValorContabil = 0;
                                    }
                                }
                            }
                        }
                    }

                    uint    idNf             = 0;
                    bool    exibirFornecedor = false;
                    decimal valorSt          = 0;

                    // Ordena os itens de acordo com a ordenação que será feita no relatório, para não dar problema na iteração abaixo,
                    // que esconde campos de acordo com as notas e ordenação
                    Itens.Sort(delegate(ItemEntrada p1, ItemEntrada p2)
                    {
                        int ret = p1.NumeroPagina.CompareTo(p2.NumeroPagina);

                        if (ret == 0)
                        {
                            ret = p1.DataEntrada.ToShortDateString().CompareTo(p2.DataEntrada.ToShortDateString());
                        }

                        if (ret == 0)
                        {
                            ret = p1.NumeroNota.CompareTo(p2.NumeroNota);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.TipoImposto, p2.TipoImposto);
                        }

                        if (ret == 0)
                        {
                            ret = p1.CodValorFiscal.CompareTo(p2.CodValorFiscal);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.CFOP, p2.CFOP);
                        }

                        return(ret);
                    });

                    // Nesta iteração, será definido quando o nome do emitente e a descrição "SUBSTITUIÇÃO TRIBUTÁRIA" deverão ser exibidos
                    for (int i = 0; i < Itens.Count; i++)
                    {
                        if (idNf != Itens[i].IdNF)
                        {
                            if (i > 0)
                            {
                                Itens[i - 1].ExibirDadosFornecedor = exibirFornecedor;
                                Itens[i - 1].ExibirDadosST         = valorSt > 0;
                                Itens[i - 1].SubTributaria         = valorSt;
                            }

                            idNf             = Itens[i].IdNF;
                            exibirFornecedor = false;
                            valorSt          = 0;
                        }

                        exibirFornecedor = true;
                        if (Itens[i].SubTributaria > 0)
                        {
                            valorSt = Itens[i].SubTributaria;
                        }

                        if (Itens[i].NumeroPagina > totalPaginas)
                        {
                            totalPaginas = (int)Itens[i].NumeroPagina;
                        }
                    }

                    if (Itens.Count > 0)
                    {
                        Itens[Itens.Count - 1].ExibirDadosFornecedor = exibirFornecedor;
                        Itens[Itens.Count - 1].ExibirDadosST         = valorSt > 0;
                        Itens[Itens.Count - 1].SubTributaria         = valorSt;
                    }

                    livro.TotalPaginas = totalPaginas;

                    report.ReportPath = "Relatorios/NFe/LivroRegistro/Entrada/rptLivroRegistroEntrada.rdlc";
                    report.DataSources.Add(new ReportDataSource("LivroRegistro", new Data.RelModel.LivroRegistro[] { livro }));
                    report.DataSources.Add(new ReportDataSource("ItemEntrada", Itens.ToArray()));
                    lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome)));
                    lstParam.Add(new ReportParameter("CorRodape", "DimGray"));
                    lstParam.Add(new ReportParameter("NumeroOrdem", livro.NumeroOrdem));
                    lstParam.Add(new ReportParameter("Periodo", dataInicial + " a " + dataFinal));
                    lstParam.Add(new ReportParameter("TotalPaginas", totalPaginas.ToString()));

                    lstParam.Add(new ReportParameter("NaoExibirBaseCalculoImpostoZerado", "false"));
                }
                #endregion

                #region Saida
                else if (tipo == "2")
                {
                    var livroSaida = LivroRegistroDAO.Instance.ObterDadosLivroRegistro(Glass.Conversoes.StrParaInt(loja));
                    livroSaida.Periodo          = new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToShortDateString() + " a " + new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), DateTime.DaysInMonth(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes)), 23, 59, 059).ToShortDateString();
                    livroSaida.UltimoLancamento = ultimoLancamento;
                    livroSaida.LocalData        = localData;
                    livroSaida.NumeroOrdem      = numeroOrdem;
                    livroSaida.Termo            = termo;
                    livroSaida.Responsavel      = func.Nome;
                    livroSaida.CPFResponsavel   = func.Cpf;
                    livroSaida.CargoResponsavel = func.DescrTipoFunc;
                    livroSaida.Contador         = cont.Nome;
                    livroSaida.CPFContador      = cont.CpfCnpj;
                    livroSaida.CRCContador      = cont.Crc;

                    List <ItemSaida> Itens = ItemSaidaDAO.Instance.ObterItensSaida(Glass.Conversoes.StrParaUint(loja), Glass.Conversoes.StrParaInt(mes), Glass.Conversoes.StrParaInt(ano));

                    #region CST 20 Redução de Base de Cálculo

                    List <ItemSaida> ItensCST20 = Itens.FindAll(delegate(ItemSaida i) { return(i.CST == "20" && i.TipoImposto == "ICMS"); });

                    foreach (ItemSaida i in ItensCST20)
                    {
                        float reducao = ProdutosNfDAO.Instance.ObtemPercentualReducaoBaseCalculo(i.IdProdNF);

                        ItemSaida isento = new ItemSaida();
                        isento.Aliquota             = 0;
                        isento.BaseCalculo          = 0;
                        isento.BaseCalculoST        = 0;
                        isento.Borda                = i.Borda;
                        isento.CodigoContabil       = i.CodigoContabil;
                        isento.CodigoFiscal         = i.CodigoFiscal;
                        isento.CorLinha             = i.CorLinha;
                        isento.CST                  = i.CST;
                        isento.Dia                  = i.Dia;
                        isento.Especie              = i.Especie;
                        isento.ExibirDadosST        = i.ExibirDadosST;
                        isento.IdNF                 = i.IdNF;
                        isento.IdProdNF             = i.IdProdNF;
                        isento.ImpostoDebitado      = 0;
                        isento.IsentasNaoTributadas = (i.ValorContabil * Convert.ToDecimal(reducao)) / 100;
                        isento.NumeroNota           = i.NumeroNota;
                        isento.NumeroPagina         = i.NumeroPagina;
                        isento.Observacao           = i.Observacao;
                        isento.Outras               = 0;
                        isento.SerieSubSerie        = i.SerieSubSerie;
                        isento.SubTributaria        = 0;
                        isento.TipoImposto          = i.TipoImposto;
                        isento.UFDestinatario       = i.UFDestinatario;
                        isento.ValorContabil        = 0;

                        Itens.Add(isento);
                    }

                    Itens.Sort(delegate(ItemSaida p1, ItemSaida p2)
                    {
                        int ret = p1.NumeroNota.CompareTo(p2.NumeroNota);

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.TipoImposto, p2.TipoImposto);
                        }

                        if (ret == 0)
                        {
                            ret = p1.CodigoFiscal.CompareTo(p2.CodigoFiscal);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.TipoImposto, p2.TipoImposto);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.Dia, p2.Dia);
                        }

                        return(ret);
                    });

                    #endregion

                    #region CST 70 Redução de Base de Cálculo

                    List <ItemSaida> ItensCST70 = Itens.FindAll(delegate(ItemSaida i) { return(i.CST == "70" && i.TipoImposto == "ICMS"); });

                    foreach (ItemSaida i in ItensCST70)
                    {
                        ProdutosNf prod = ProdutosNfDAO.Instance.GetElement(i.IdProdNF);

                        ItemSaida isento = new ItemSaida();
                        isento.Aliquota             = 0;
                        isento.BaseCalculo          = prod.BcIcms;;     // (i.ValorContabil * Convert.ToDecimal(prod.PercRedBcIcms)) / 100;
                        isento.BaseCalculoST        = prod.BcIcmsSt;    //(i.ValorContabil + (i.ValorContabil * (Convert.ToDecimal(prod.Mva) / 100))) * (Convert.ToDecimal(prod.PercRedBcIcmsSt) / 100);
                        isento.SubTributaria        = prod.ValorIcmsSt; //Math.Round((prod.BcIcmsSt * (decimal)(prod.AliqIcmsSt / 100)) - (prod.ValorIcms > 0 ? prod.ValorIcms : ((prod.Total - prod.ValorDesconto) * (decimal)(prod.AliqIcms / 100))), 2);
                        isento.Borda                = i.Borda;
                        isento.CodigoContabil       = i.CodigoContabil;
                        isento.CodigoFiscal         = i.CodigoFiscal;
                        isento.CorLinha             = i.CorLinha;
                        isento.CST                  = i.CST;
                        isento.Dia                  = i.Dia;
                        isento.Especie              = i.Especie;
                        isento.ExibirDadosST        = i.ExibirDadosST;
                        isento.IdNF                 = i.IdNF;
                        isento.IdProdNF             = i.IdProdNF;
                        isento.ImpostoDebitado      = 0;
                        isento.IsentasNaoTributadas = (i.ValorContabil * Convert.ToDecimal(prod.PercRedBcIcms)) / 100;
                        isento.NumeroNota           = i.NumeroNota;
                        isento.NumeroPagina         = i.NumeroPagina;
                        isento.Observacao           = i.Observacao;
                        isento.Outras               = 0;
                        isento.SerieSubSerie        = i.SerieSubSerie;
                        isento.SubTributaria        = 0;
                        isento.TipoImposto          = i.TipoImposto;
                        isento.UFDestinatario       = i.UFDestinatario;
                        isento.ValorContabil        = 0;

                        Itens.Add(isento);
                    }

                    Itens.Sort(delegate(ItemSaida p1, ItemSaida p2)
                    {
                        int ret = p1.NumeroNota.CompareTo(p2.NumeroNota);

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.TipoImposto, p2.TipoImposto);
                        }

                        if (ret == 0)
                        {
                            ret = p1.CodigoFiscal.CompareTo(p2.CodigoFiscal);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.TipoImposto, p2.TipoImposto);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.Dia, p2.Dia);
                        }

                        return(ret);
                    });

                    #endregion

                    foreach (ItemSaida item in Itens)
                    {
                        List <ItemSaida> itens = Itens.FindAll(delegate(ItemSaida i) { return(i.NumeroNota == item.NumeroNota); });

                        if (itens.Count > 0)
                        {
                            for (int i = 1; i < itens.Count; i++)
                            {
                                itens[i].CorLinha = "White";

                                if (itens.FindAll(delegate(ItemSaida itemSaida) { return(item.TipoImposto == "ICMS"); }).Count > 0)
                                {
                                    if (itens[i].TipoImposto == "IPI")
                                    {
                                        itens[i].ValorContabil = 0;
                                    }
                                }
                            }
                        }
                    }

                    totalPaginas = int.MinValue;
                    idNota       = 0;

                    // Ordena os itens de acordo com a ordenação que será feita no relatório, para não dar problema na iteração abaixo,
                    // que esconde campos de acordo com as notas e ordenação
                    Itens.Sort(delegate(ItemSaida p1, ItemSaida p2)
                    {
                        int ret = p1.NumeroPagina.CompareTo(p2.NumeroPagina);

                        if (ret == 0)
                        {
                            ret = p1.NumeroNota.CompareTo(p2.NumeroNota);
                        }

                        if (ret == 0)
                        {
                            ret = p1.CodigoFiscal.CompareTo(p2.CodigoFiscal);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.TipoImposto, p2.TipoImposto);
                        }

                        if (ret == 0)
                        {
                            ret = String.Compare(p1.Dia, p2.Dia);
                        }

                        return(ret);
                    });

                    // Nesta iteração, será definido quando os dados do ICMS ST deverão ser exibidos
                    for (int i = 0; i < Itens.Count; i++)
                    {
                        if (idNota != Itens[i].IdNF)
                        {
                            idNota = Itens[i].IdNF;
                            if (i > 0)
                            {
                                Itens[i - 1].ExibirDadosST = true;
                            }
                        }

                        if (Itens[i].NumeroPagina > totalPaginas)
                        {
                            totalPaginas = (int)Itens[i].NumeroPagina;
                        }
                    }

                    if (Itens.Count > 0)
                    {
                        Itens[Itens.Count - 1].ExibirDadosST = true;
                    }

                    livroSaida.TotalPaginas = totalPaginas;

                    report.ReportPath = "Relatorios/NFe/LivroRegistro/Saida/rptLivroRegistroSaida.rdlc";
                    report.DataSources.Add(new ReportDataSource("LivroRegistro", new Data.RelModel.LivroRegistro[] { livroSaida }));
                    report.DataSources.Add(new ReportDataSource("ItemSaida", Itens.ToArray()));
                    lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome)));
                    lstParam.Add(new ReportParameter("CorRodape", "DimGray"));
                    lstParam.Add(new ReportParameter("NumeroOrdem", livroSaida.NumeroOrdem));
                }
                #endregion

                #region Apuração ICMS/IPI

                else if (tipo == "3" || tipo == "4")
                {
                    #region Dados digitados pelo usuário

                    string  outrosDebitosDesc   = Request["outrosDebitosDesc"];
                    decimal outrosDebitosValor  = Request["outrosDebitosValor"] == "" ? 0 : Convert.ToDecimal(Request["outrosDebitosValor"]);
                    string  estornoCreditoDesc  = Request["estornoCreditoDesc"];
                    decimal estornoCreditoValor = Request["estornoCreditoValor"] == "" ? 0 : Convert.ToDecimal(Request["estornoCreditoValor"]);
                    string  outrosCreditosDesc  = Request["outrosCreditosDesc"];
                    decimal outrosCreditosValor = Request["outrosCreditosValor"] == "" ? 0 : Convert.ToDecimal(Request["outrosCreditosValor"]);
                    string  estornoDebitoDesc   = Request["estornoDebitoDesc"];
                    decimal estornoDebitoValor  = Request["estornoDebitoValor"] == "" ? 0 : Convert.ToDecimal(Request["estornoDebitoValor"]);
                    string  deducaoDesc         = Request["deducaoDesc"];
                    decimal deducaoValor        = Request["deducaoValor"] == "" ? 0 : Convert.ToDecimal(Request["deducaoValor"]);

                    #endregion

                    var livroApuracao = LivroRegistroDAO.Instance.ObterDadosLivroRegistro(Glass.Conversoes.StrParaInt(loja));
                    livroApuracao.Periodo                 = new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToShortDateString() + " a " + new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), DateTime.DaysInMonth(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes)), 23, 59, 059).ToShortDateString();
                    livroApuracao.UltimoLancamento        = ultimoLancamento;
                    livroApuracao.LocalData               = localData;
                    livroApuracao.NumeroOrdem             = numeroOrdem;
                    livroApuracao.Termo                   = termo;
                    livroApuracao.Responsavel             = func.Nome;
                    livroApuracao.CPFResponsavel          = func.Cpf;
                    livroApuracao.CargoResponsavel        = func.DescrTipoFunc;
                    livroApuracao.Contador                = cont.Nome;
                    livroApuracao.CPFContador             = cont.CpfCnpj;
                    livroApuracao.CRCContador             = cont.Crc;
                    livroApuracao.EstornoCreditosDescicao = estornoCreditoDesc;
                    livroApuracao.EstornoCreditosValor    = Convert.ToDecimal(estornoCreditoValor);
                    livroApuracao.EstornoDebitosDescicao  = estornoDebitoDesc;
                    livroApuracao.EstornoDebitosValor     = Convert.ToDecimal(estornoDebitoValor);
                    livroApuracao.OutrosCreditosDescicao  = outrosCreditosDesc;
                    livroApuracao.OutrosCreditosValor     = Convert.ToDecimal(outrosCreditosValor);
                    livroApuracao.OutrosDebitosDescicao   = outrosDebitosDesc;
                    livroApuracao.OutrosDebitosValor      = Convert.ToDecimal(outrosDebitosValor);
                    livroApuracao.DeducaoDescricao        = deducaoDesc;
                    livroApuracao.DeducaoValor            = Convert.ToDecimal(deducaoValor);

                    List <ItemApuracao> Itens = tipo == "3" ? ItemApuracaoDAO.Instance.ObterApuracaoICMS(Glass.Conversoes.StrParaUint(loja), Glass.Conversoes.StrParaInt(mes), Glass.Conversoes.StrParaInt(ano), login) :
                                                ItemApuracaoDAO.Instance.ObterApuracaoIPI(Glass.Conversoes.StrParaUint(loja), Glass.Conversoes.StrParaInt(mes), Glass.Conversoes.StrParaInt(ano), login);

                    totalPaginas = int.MinValue;
                    idNota       = 0;

                    for (int i = 0; i < Itens.Count; i++)
                    {
                        if (Itens[i].Operacao == 1)
                        {
                            livroApuracao.TotalCredito += Itens[i].Imposto;
                            if (tipo == "3")
                            {
                                livroApuracao.TotalCreditoST += Itens[i].ImpostoST;
                            }
                        }
                        else
                        {
                            livroApuracao.TotalDebito += Itens[i].Imposto;
                            if (tipo == "3")
                            {
                                livroApuracao.TotalDebitoST += Itens[i].ImpostoST;
                            }
                        }

                        if (Itens[i].Folha > totalPaginas)
                        {
                            totalPaginas = (int)Itens[i].Folha;
                        }
                    }

                    #region ICMS/IPI

                    livroApuracao.TotalDebitoApuracao     = livroApuracao.TotalDebito + livroApuracao.OutrosDebitosValor + livroApuracao.EstornoCreditosValor;
                    livroApuracao.SubTotalCreditoApuracao = livroApuracao.TotalCredito + livroApuracao.OutrosCreditosValor + livroApuracao.EstornoDebitosValor;

                    ControleCreditoApuracao credito = ControleCreditoApuracaoDAO.Instance.ObterCreditoMesAnterior(new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).AddMonths(-1).ToString("yyyy-MM"), tipo == "3" ? Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.Icms : Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.Ipi);

                    if (credito == null)
                    {
                        livroApuracao.SaldoCredorMesAnterior = 0;
                    }
                    else
                    {
                        livroApuracao.SaldoCredorMesAnterior = credito.ValorGerado;
                    }

                    livroApuracao.TotalCreditoApuracao = livroApuracao.SubTotalCreditoApuracao + livroApuracao.SaldoCredorMesAnterior;

                    //SE CAMPO 11 RETORNAR COM VALOR NEGATIVO, NAO MOSTAR NO LIVRO E PASSAR ESTE SALDO PARA O CAMPO 14
                    if ((livroApuracao.TotalDebitoApuracao - livroApuracao.TotalCreditoApuracao) < 0)
                    {
                        livroApuracao.SaldoCredor  = -(livroApuracao.TotalDebitoApuracao - livroApuracao.TotalCreditoApuracao);
                        livroApuracao.SaldoDevedor = 0;
                    }
                    else
                    {
                        livroApuracao.SaldoDevedor = livroApuracao.TotalDebitoApuracao - livroApuracao.TotalCreditoApuracao;
                    }

                    ControleCreditoApuracaoDAO.Instance.InserirCredito(new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToString("yyyy-MM"), tipo == "3" ? Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.Icms : Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.Ipi, livroApuracao.SaldoCredor);

                    livroApuracao.ImpostoRecolher = livroApuracao.SaldoDevedor + livroApuracao.DeducaoValor;

                    #endregion

                    if (tipo == "3")
                    {
                        #region ICMSST

                        livroApuracao.TotalDebitoApuracaoST     = livroApuracao.TotalDebitoST + livroApuracao.OutrosDebitosValor + livroApuracao.EstornoCreditosValor;
                        livroApuracao.SubTotalCreditoApuracaoST = livroApuracao.TotalCreditoST + livroApuracao.OutrosCreditosValor + livroApuracao.EstornoDebitosValor;

                        ControleCreditoApuracao creditoICMSST = ControleCreditoApuracaoDAO.Instance.ObterCreditoMesAnterior(new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).AddMonths(-1).ToString("yyyy-MM"), Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.IcmsST);

                        if (creditoICMSST == null)
                        {
                            livroApuracao.SaldoCredorMesAnteriorST = 0;
                        }
                        else
                        {
                            livroApuracao.SaldoCredorMesAnteriorST = creditoICMSST.ValorGerado;
                        }

                        livroApuracao.TotalCreditoApuracaoST = livroApuracao.SubTotalCreditoApuracaoST + livroApuracao.SaldoCredorMesAnteriorST;

                        //SE CAMPO 11 RETORNAR COM VALOR NEGATIVO, NAO MOSTAR NO LIVRO E PASSAR ESTE SALDO PARA O CAMPO 14
                        if ((livroApuracao.TotalDebitoApuracaoST - livroApuracao.TotalCreditoApuracaoST) < 0)
                        {
                            livroApuracao.SaldoCredorST  = -(livroApuracao.TotalDebitoApuracaoST - livroApuracao.TotalCreditoApuracaoST);
                            livroApuracao.SaldoDevedorST = 0;
                        }
                        else
                        {
                            livroApuracao.SaldoDevedorST = livroApuracao.TotalDebitoApuracaoST - livroApuracao.TotalCreditoApuracaoST;
                        }

                        ControleCreditoApuracaoDAO.Instance.InserirCredito(new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToString("yyyy-MM"), Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.IcmsST, livroApuracao.SaldoCredorST);

                        livroApuracao.ImpostoRecolherST = livroApuracao.SaldoDevedorST + livroApuracao.DeducaoValor;

                        #endregion
                    }

                    livroApuracao.TotalPaginas = totalPaginas;

                    string rep = tipo == "3" ? "ICMS/rptApuracaoICMS.rdlc" : "IPI/rptApuracaoIPI.rdlc";
                    report.ReportPath = "Relatorios/NFe/LivroRegistro/Apuracao/" + rep;
                    report.DataSources.Add(new ReportDataSource("LivroRegistro", new Data.RelModel.LivroRegistro[] { livroApuracao }));
                    report.DataSources.Add(new ReportDataSource("ItemApuracao", Itens.ToArray()));
                    lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome)));
                    lstParam.Add(new ReportParameter("CorRodape", "DimGray"));
                    lstParam.Add(new ReportParameter("EstadoLoja", livroApuracao.Estado));
                }
                #endregion

                break;
            }

            // Atribui parâmetros ao relatório
            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogoColor(PageRequest, idLoja)));

            return(null);
        }
Exemplo n.º 20
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)
        {
            var orca = OrcamentoDAO.Instance.GetForRpt(Glass.Conversoes.StrParaUint(Request["idOrca"]));

            orca.SomarDescontoProdutosTotal = OrcamentoConfig.ExibirItensProdutosRelatorio;
            ProdutosOrcamento[] prodOrca = ProdutosOrcamentoDAO.Instance.GetForRpt(Glass.Conversoes.StrParaUint(Request["idOrca"]), true);

            var itensProjeto = ItemProjetoDAO.Instance.GetByOrcamento(Conversoes.StrParaUint(Request["idOrca"]));

            uint idLoja = orca.IdLoja != null ? orca.IdLoja.Value : 0;

            // Recupera o caminho do relatório a ser renderizado
            var caminhoRelatorio = string.Format("Relatorios/ModeloOrcamento/rptOrcamento{0}.rdlc", ControleSistema.GetSite().ToString());

            if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(string.Format("~/{0}", caminhoRelatorio))))
            {
                report.ReportPath = caminhoRelatorio;
            }
            else
            {
                report.ReportPath = PedidoConfig.LiberarPedido ? "Relatorios/ModeloOrcamento/rptOrcamentoLib.rdlc" :
                                    "Relatorios/ModeloOrcamento/rptOrcamento.rdlc";
            }

            string rptLogoPath = idLoja > 0 ?
                                 Logotipo.GetReportLogo(PageRequest, idLoja) : Logotipo.GetReportLogoColorOrca(PageRequest);

            if (Geral.ConsiderarLojaClientePedidoFluxoSistema && orca.IdCliente.GetValueOrDefault(0) > 0)
            {
                var idCliente = orca.IdCliente.Value;

                if (idCliente > 0)
                {
                    var idLojaCliente = ClienteDAO.Instance.ObtemIdLoja(idCliente);

                    if (idLojaCliente > 0)
                    {
                        rptLogoPath = Logotipo.GetReportLogo(PageRequest, idLojaCliente);
                    }
                }
            }

            #region Transportador cliente

            var nomeTransportadorCliente = string.Empty;

            if (orca.IdCliente > 0)
            {
                var idTransportador = ClienteDAO.Instance.ObtemIdTransportador(orca.IdCliente.Value);

                if (idTransportador > 0)
                {
                    nomeTransportadorCliente = TransportadorDAO.Instance.GetNome(idTransportador.Value);
                }
            }

            lstParam.Add(new ReportParameter("NomeTransportadorCliente", nomeTransportadorCliente));

            #endregion

            lstParam.Add(new ReportParameter("Logotipo", rptLogoPath));
            lstParam.Add(new ReportParameter("ExibirCusto", "false"));
            lstParam.Add(new ReportParameter("AgruparBeneficiamentos", PedidoConfig.RelatorioPedido.AgruparBenefRelatorio.ToString()));
            lstParam.Add(new ReportParameter("ExibirIcmsIpi", "True"));
            lstParam.Add(new ReportParameter("Cabecalho_IdOrcamento", orca.IdOrcamento.ToString()));
            lstParam.Add(new ReportParameter("Cabecalho_DataOrcamento", orca.DataOrcamento));
            lstParam.Add(new ReportParameter("Cabecalho_TelefoneLoja", orca.TelefoneLoja));
            lstParam.Add(new ReportParameter("Cabecalho_EmailLoja", orca.EmailLoja));
            lstParam.Add(new ReportParameter("Cabecalho_DadosLoja", orca.DadosLoja));
            lstParam.Add(new ReportParameter("Cabecalho_EnderecoLoja", orca.EnderecoLoja));
            lstParam.Add(new ReportParameter("Cabecalho_FoneFaxLoja", orca.FoneFaxLoja));
            lstParam.Add(new ReportParameter("Cabecalho_SiteLoja", orca.EmailLoja));
            lstParam.Add(new ReportParameter("FormatTotM", Glass.Configuracoes.Geral.GetFormatTotM()));

            report.DataSources.Add(new ReportDataSource("Orcamento", new Data.Model.Orcamento[] { orca }));
            report.DataSources.Add(new ReportDataSource("ProdutosOrcamento", prodOrca));
            report.DataSources.Add(new ReportDataSource("ItensProjeto", itensProjeto));
            report.DataSources.Add(new ReportDataSource("TextoOrcamento", TextoOrcamentoDAO.Instance.GetByOrcamento(orca.IdOrcamento)));

            return(null);
        }
Exemplo n.º 21
0
        protected void Page_Load(object sender, EventArgs e)
        {
            LocalReport report = new LocalReport();

            List <ReportParameter> lstParam = new List <ReportParameter>();

            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo()));
            report.EnableExternalImages = true;

            uint?idCliente = UserInfo.GetUserInfo.IdCliente;

            // Se não for um cliente que estiver logado, não imprime relatório
            if (idCliente == null || idCliente == 0)
            {
                return;
            }

            if (Request["rel"] == "Danfe")
            {
                Response.Redirect("~/Handlers/Danfe.ashx?idNf=" + Request["idNf"] + "&previsualizar=" + Request["previsualizar"]);
                return;
            }

            uint idFunc = UserInfo.GetUserInfo.CodUser;

            // Verifica qual relatório será chamado
            switch (Request["rel"])
            {
            case "Debitos":
                report.ReportPath = "Relatorios/rptDebitosCliente.rdlc";
                var debitos = ContasReceberDAO.Instance.GetDebitosList(idCliente.Value,
                                                                       Glass.Conversoes.StrParaUint(Request["idPedido"]), Glass.Conversoes.StrParaUint(Request["idLiberarPedido"]), null, 0, 0, null,
                                                                       null, null, 0, 100000);
                report.DataSources.Add(new ReportDataSource("ContasReceber", debitos));
                lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(FuncionarioDAO.Instance.GetNome(idFunc))));
                lstParam.Add(new ReportParameter("CorRodape", "DimGray"));
                lstParam.Add(new ReportParameter("LiberarPedido", PedidoConfig.LiberarPedido.ToString()));
                break;

            default:
                throw new Exception("Nenhum relatório especificado.");
            }

            report.SetParameters(lstParam);

            Warning[] Warnings  = null;
            string[]  StreamIds = null;
            string    MimeType  = null;
            string    Encoding  = null;
            string    Extension = null;

            byte[] bytes = null;

            bytes = report.Render("PDF", null, out MimeType, out Encoding, out Extension, out StreamIds, out Warnings);

            try
            {
                // Utilizado para exibir na tela
                Response.Clear();
                Response.ContentType = MimeType;
                Response.AddHeader("Content-disposition", "inline");
                Response.BinaryWrite(bytes);
                Response.End();
            }
            catch (Exception ex)
            {
                ex.Data["warnings"]  = Warnings;
                ex.Data["streamids"] = StreamIds;
                ex.Data["mimetype"]  = MimeType;
                ex.Data["encoding"]  = Encoding;
                ex.Data["extension"] = Extension;
                throw ex;
            }
        }