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); }
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); }