private static void CalcularValorRepassePago(ValoresRelatorioRentabilidadeDto valoresRelatorio, List <ItemLancamentoFinanceiro> itemLancamentoFinanceiros, List <RepasseRelatorioRentabilidadeModel> repassesPagos, ServicoContratadoRelatorioRentabilidadeModel servico, List <CelulaEacesso> celulas) { var repassesPorServico = repassesPagos.Where(x => x.IdServicoContratado == servico.Id).Select(x => x.Id).ToList(); var itensLancamentoRepassePorServico = itemLancamentoFinanceiros.Where(x => repassesPorServico.Contains(x.IdRepasse.Value)); valoresRelatorio.VlRepPag += itensLancamentoRepassePorServico.Where(x => x.LancamentoFinanceiro.DescricaoTipoLancamento == "D" && x.LancamentoFinanceiro.IdTipoDespesa != null && x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "RP").Sum(x => x.VlLancamento); }
private static void CalcularValorRepasseRecebido(ValoresRelatorioRentabilidadeDto valoresRelatorio, List <ItemLancamentoFinanceiro> itemLancamentoFinanceiros, List <RepasseRelatorioRentabilidadeModel> repassesRecebidos, ServicoContratadoRelatorioRentabilidadeModel servico, List <CelulaEacesso> celulas) { var repassesPorServico = repassesRecebidos.Where(x => x.IdServicoContratado == servico.Id).Select(x => x.Id).ToList(); var itensLancamentoRepassePorServico = itemLancamentoFinanceiros.Where(x => repassesPorServico.Contains(x.IdRepasse.Value)).ToList(); var tiposPossiveis = new string[] { "RP", "PR", "IN", "PI", "CO", "CS", "IR", "FG", "BN" }; valoresRelatorio.VlRepRec += itensLancamentoRepassePorServico.Where(x => x.LancamentoFinanceiro.DescricaoTipoLancamento == "C" && x.LancamentoFinanceiro.IdTipoDespesa != null && tiposPossiveis.Contains(x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa)).ToList().Sum(x => x.VlLancamento); }
private void CalcularValorDespesasGeraisRepasse(ValoresRelatorioRentabilidadeDto valorRelatorio, ServicoContratadoRelatorioRentabilidadeModel servico, List <ItemLancamentoFinanceiro> itensLancamentoFinanceiro, List <CelulaEacesso> celulas) { var lancamentosValidos = itensLancamentoFinanceiro.Where(x => x.LancamentoFinanceiro.IdTipoDespesa != null && (x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "DG" || x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "DF") ); valorRelatorio.VlDespGeral += lancamentosValidos.Sum(x => x.VlLancamento); }
private void CalcularValorDespesasSalarioRepasse(ValoresRelatorioRentabilidadeDto valorRelatorio, ServicoContratadoRelatorioRentabilidadeModel servico, List <ItemLancamentoFinanceiro> itensLancamentoFinanceiro, List <CelulaEacesso> celulas) { var tipoCelula = celulas.FirstOrDefault(x => x.IdCelula == servico.IdCelula); var lancamentosValidos = itensLancamentoFinanceiro.Where(x => x.LancamentoFinanceiro.IdTipoDespesa != null && ( ( (x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "SP" && (servico.SiglaTipoServico != "ACC" || tipoCelula.IdTipoCelula != 1)) || (x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "SG" && tipoCelula.IdTipoCelula != 1) ) ) ); valorRelatorio.VlDespSal += lancamentosValidos.Sum(x => x.VlLancamento); }
private void CalcularValorDespesasCelula(ValoresRelatorioRentabilidadeDto valorRelatorio, IGrouping <int?, ItemLancamentoFinanceiro> itemServico, ServicoContratadoRelatorioRentabilidadeModel servico, List <ItemLancamentoFinanceiro> itensLancamentosRepassesPagos, List <RepasseRelatorioRentabilidadeModel> repassesPagos, List <CelulaEacesso> celulas) { var tipoCelula = celulas.FirstOrDefault(x => x.IdCelula == servico.IdCelula); var somenteCompras = itemServico.Where(x => x.LancamentoFinanceiro.DescricaoOrigemLancamento == "CP").ToList(); somenteCompras = somenteCompras.Where(x => x.LancamentoFinanceiro.IdTipoDespesa != null && ( (x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "SG" && tipoCelula.IdTipoCelula == 1) || (x.LancamentoFinanceiro.DescOrigemCompraEacesso == "GPD") || (x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "SP" && tipoCelula.IdTipoCelula == 1 && servico.SiglaTipoServico == "ACC") ) ).ToList(); valorRelatorio.VlDespCel += somenteCompras.Sum(x => x.VlLancamento); var repassesPorServico = repassesPagos.Where(x => x.IdServicoContratado == itemServico.Key).Select(x => x.Id).ToList(); CalcularValorDespesasCelulaRepasse(valorRelatorio, servico, itensLancamentosRepassesPagos.Where(x => repassesPorServico.Contains(x.IdRepasse.Value)).ToList(), celulas); }
private void CalcularValorDespesasCelulaRepasse(ValoresRelatorioRentabilidadeDto valorRelatorio, ServicoContratadoRelatorioRentabilidadeModel servico, List <ItemLancamentoFinanceiro> itensLancamentoFinanceiro, List <CelulaEacesso> celulas) { var tipoCelula = celulas.FirstOrDefault(x => x.IdCelula == servico.IdCelula); var tiposPossiveis = new string[] { "PR", "IN", "PI", "CO", "CS", "IR", "FG", "BN" }; var lancamentosValidos = itensLancamentoFinanceiro.Where(x => x.LancamentoFinanceiro.IdTipoDespesa != null && ( (x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "SP" && tipoCelula.IdTipoCelula == 1 && servico.SiglaTipoServico == "ACC") || (x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "SG" && tipoCelula.IdTipoCelula == 1) || ( tiposPossiveis.Contains(x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa) && (tipoCelula.IdTipoCelula == 1 && servico.SiglaTipoServico == "ACC") ) ) ); valorRelatorio.VlDespCel += lancamentosValidos.Sum(x => x.VlLancamento); }
private void CalcularValorAjusteFaturamento(ValoresRelatorioRentabilidadeDto valorRelatorio, IGrouping <int?, ItemLancamentoFinanceiro> itemServico, ServicoContratadoRelatorioRentabilidadeModel servico, List <ItemLancamentoFinanceiro> itensLancamentosRepassesPagos, List <RepasseRelatorioRentabilidadeModel> repassesPagos, List <CelulaEacesso> celulas) { var repassesPorServico = repassesPagos.Where(x => x.IdServicoContratado == itemServico.Key).Select(x => x.Id).ToList(); var itensValidos = itensLancamentosRepassesPagos.Where(x => repassesPorServico.Contains(x.IdRepasse.Value)); var lancamentosValidos = itensValidos.Where(x => x.LancamentoFinanceiro.IdTipoDespesa != null && x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "AJ" ).ToList(); valorRelatorio.VlAjustFat += lancamentosValidos.Sum(x => (x.VlInc.Value - x.VlDesc.Value)); }
private void CalcularValorImpostoRepasse(ValoresRelatorioRentabilidadeDto valorRelatorio, List <ItemLancamentoFinanceiro> itensLancamentosRepassesPagos, List <RepasseRelatorioRentabilidadeModel> repassesPagos, ServicoContratadoRelatorioRentabilidadeModel servico, List <CelulaEacesso> celulas) { var tipoCelula = celulas.FirstOrDefault(x => x.IdCelula == servico.IdCelula); var tiposPossiveis = new List <string> { "PR", "IN", "PI", "CO", "CS", "IR", "FG", "BN" }; var repassesPorServico = repassesPagos.Where(x => x.IdServicoContratado == servico.Id).Select(x => x.Id).ToList(); var itensLancamentoRepassePorServico = itensLancamentosRepassesPagos.Where(x => repassesPorServico.Contains(x.IdRepasse.Value) && (tipoCelula.IdTipoCelula != 1 || servico.SiglaTipoServico != "ACC") && tiposPossiveis.Contains(x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa) ); valorRelatorio.VlRepPagImp = itensLancamentoRepassePorServico.Sum(x => x.VlLancamento); }
public List <ValoresRelatorioRentabilidadeDto> ObterInformacoesPorDiretoria(FiltroRelatorioRentabilidadeDiretoriaDto filtro) { var idCelulaSelecionada = filtro.IdsCelula.LastOrDefault(); var proceduresService = new ProceduresService(_connectionStrings.Value.EacessoConnection); var celulaValidadas = proceduresService.ObterHierarquiaCelulas(filtro.IdsCelula.LastOrDefault()); var idsCelulaValidadas = celulaValidadas.Select(x => x.IdCelula).Concat(celulaValidadas.Select(x => x.IdCelulaSup)).Distinct().ToList(); filtro.IdsCelula = idsCelulaValidadas; #region variaveis var servicos = new List <ServicoContratadoRelatorioRentabilidadeModel>(); var repassesPagos = new List <RepasseRelatorioRentabilidadeModel>(); var repassesRecebidos = new List <RepasseRelatorioRentabilidadeModel>(); List <ValoresRelatorioRentabilidadeDto> valoresRelatorio = new List <ValoresRelatorioRentabilidadeDto>(); List <ValoresRelatorioRentabilidadeDto> valoresRelatorioCliente = new List <ValoresRelatorioRentabilidadeDto>(); List <ValoresRelatorioRentabilidadeDto> valoresRelatorioCelula = new List <ValoresRelatorioRentabilidadeDto>(); var itensLancamentosServico = new List <ItemLancamentoFinanceiro>(); var itensLancamentosRepassesPagos = new List <ItemLancamentoFinanceiro>(); var itensLancamentosRepassesRecebidos = new List <ItemLancamentoFinanceiro>(); var celulas = new List <CelulaEacesso>(); var celulasService = new CelulaEacessoService(_connectionStrings.Value.EacessoConnection); celulas = celulasService.ObterCelulasPorIds(filtro.IdsCelula); #endregion itensLancamentosServico = ObterItensLancamentoPorServico(filtro, out servicos); itensLancamentosRepassesPagos = ObterItensLancamentoRepassesPagos(filtro, out repassesPagos); itensLancamentosRepassesRecebidos = ObterItensLancamentoRepassesRecebidos(filtro, out repassesRecebidos); var itensAgrupados = itensLancamentosServico.GroupBy(x => x.IdServicoContratado); var itensAgrupadosRepassesPagos = itensLancamentosRepassesPagos.GroupBy(x => x.IdRepasse); var itensAgrupadosRepassesRecebidos = itensLancamentosRepassesRecebidos.GroupBy(x => x.IdRepasse); var repassesPagosAgrupados = repassesPagos.GroupBy(x => x.IdServicoContratado); var repassesRecebidosAgrupados = repassesRecebidos.GroupBy(x => x.IdServicoContratado); var idsServicos = itensAgrupados.Select(x => new ManipularValoresRelatorio { Id = x.Key.Value, Tipo = "S" }).Distinct().ToList(); var idsRepassesPagos = itensAgrupadosRepassesPagos.Select(x => new ManipularValoresRelatorio { Id = x.Key.Value, Tipo = "R" }).Distinct(); var idsRepassesRecebidos = itensAgrupadosRepassesRecebidos.Select(x => new ManipularValoresRelatorio { Id = x.Key.Value, Tipo = "R" }).Distinct(); foreach (var item in repassesPagosAgrupados) { if (!idsServicos.Any(x => x.Id == item.Key)) { idsServicos.Add(new ManipularValoresRelatorio { Id = item.Key, Tipo = "S" }); } } foreach (var item in repassesRecebidosAgrupados) { if (!idsServicos.Any(x => x.Id == item.Key)) { idsServicos.Add(new ManipularValoresRelatorio { Id = item.Key, Tipo = "S" }); } } foreach (var idItem in idsServicos) { var servicoAtual = new ServicoContratadoRelatorioRentabilidadeModel(); if (idItem.Tipo == "S") { servicoAtual = servicos.FirstOrDefault(x => x.Id == idItem.Id); } else { var idServico = repassesPagosAgrupados.FirstOrDefault(x => x.Any(y => y.Id == idItem.Id)); if (idServico != null) { servicoAtual = servicos.FirstOrDefault(x => x.Id == idServico.Key); } else { idServico = repassesRecebidosAgrupados.FirstOrDefault(x => x.Any(y => y.Id == idItem.Id)); if (idServico != null) { servicoAtual = servicos.FirstOrDefault(x => x.Id == idServico.Key); } } } IGrouping <int?, ItemLancamentoFinanceiro> itemServico = null; itemServico = itensAgrupados.FirstOrDefault(x => x.Key == servicoAtual.Id); if (itemServico == null) { var idsPagos = repassesPagos.Where(x => x.IdServicoContratado == servicoAtual.Id).Select(x => x.Id).ToList(); var itens = itensLancamentosRepassesPagos.Where(x => idsPagos.Contains(x.IdRepasse.Value)); foreach (var item in itens) { item.IdServicoContratado = repassesPagos.FirstOrDefault(x => x.Id == item.IdRepasse).IdServicoContratado; } itemServico = itensLancamentosRepassesPagos.Where(x => idsPagos.Contains(x.IdRepasse.Value)).GroupBy(x => x.IdServicoContratado).FirstOrDefault(); } if (itemServico == null) { var idsPagos = repassesRecebidos.Where(x => x.IdServicoContratado == servicoAtual.Id).Select(x => x.Id).ToList(); var itens = itensLancamentosRepassesRecebidos.Where(x => idsPagos.Contains(x.IdRepasse.Value)); foreach (var item in itens) { item.IdServicoContratado = repassesRecebidos.FirstOrDefault(x => x.Id == item.IdRepasse).IdServicoContratado; } itemServico = itensLancamentosRepassesRecebidos.Where(x => idsPagos.Contains(x.IdRepasse.Value)).GroupBy(x => x.IdServicoContratado).FirstOrDefault(); } if (itemServico == null) { continue; } var valorRelatorio = new ValoresRelatorioRentabilidadeDto(); valorRelatorio.Descricao = "SERVIÇO:" + servicos.FirstOrDefault(x => x.Id == servicoAtual.Id).DescEscopo; valorRelatorio.Tipo = ""; valorRelatorio.Nivel = 4; valorRelatorio.IdServico = servicoAtual.Id; valorRelatorio.IdCelula = servicoAtual.IdCelula; valorRelatorio.IdCliente = servicos.FirstOrDefault(x => x.Id == servicoAtual.Id).IdCliente; CalcularValorFaturamentoServico(valorRelatorio, itemServico, celulas); CalcularValorAjusteFaturamento(valorRelatorio, itemServico, servicos.FirstOrDefault(x => x.Id == servicoAtual.Id), itensLancamentosRepassesPagos.ToList(), repassesPagos, celulas); CalcularValorFaturamentoAjusteServico(valorRelatorio, celulas); CalcularValorMarkup(valorRelatorio, itemServico, servicos.FirstOrDefault(x => x.Id == servicoAtual.Id), itensLancamentosRepassesPagos.ToList(), repassesPagos, celulas); CalcularValorDespesasGerais(valorRelatorio, itemServico, servicos.FirstOrDefault(x => x.Id == servicoAtual.Id), itensLancamentosRepassesPagos.ToList(), repassesPagos, celulas); CalcularValorDespesasSalario(valorRelatorio, itemServico, servicos.FirstOrDefault(x => x.Id == servicoAtual.Id), itensLancamentosRepassesPagos.ToList(), repassesPagos, celulas); CalcularValorDespesasCelula(valorRelatorio, itemServico, servicos.FirstOrDefault(x => x.Id == servicoAtual.Id), itensLancamentosRepassesPagos.ToList(), repassesPagos, celulas); CalcularValorTotalDespesa(valorRelatorio, itemServico); CalcularValorImpostoRepasse(valorRelatorio, itensLancamentosRepassesPagos.ToList(), repassesPagos, servicoAtual, celulas); CalcularValorRepassePago(valorRelatorio, itensLancamentosRepassesPagos.ToList(), repassesPagos, servicoAtual, celulas); CalcularValorRepasseRecebido(valorRelatorio, itensLancamentosRepassesRecebidos.ToList(), repassesRecebidos, servicoAtual, celulas); CalcularValorLucroServico(valorRelatorio); CalcularValorPorcentagemLucroServico(valorRelatorio); valoresRelatorio.Add(valorRelatorio); } return(FiltrarTipoRelatorio(filtro, idCelulaSelecionada, celulaValidadas, valoresRelatorio)); }
private void CalcularValorMarkup(ValoresRelatorioRentabilidadeDto valorRelatorio, IGrouping <int?, ItemLancamentoFinanceiro> itemServico, ServicoContratadoRelatorioRentabilidadeModel servicoContratadoRelatorioRentabilidadeModel, List <ItemLancamentoFinanceiro> itensLancamentosRepassesPagos, List <RepasseRelatorioRentabilidadeModel> repassesPagos, List <CelulaEacesso> celulas) { var repassesPorServico = repassesPagos.Where(x => x.IdServicoContratado == itemServico.Key).Select(x => x.Id).ToList(); var itensValidos = itensLancamentosRepassesPagos.Where(x => repassesPorServico.Contains(x.IdRepasse.Value)).ToList(); var lancamentosValidos = itensValidos.Where(x => x.LancamentoFinanceiro.IdTipoDespesa != null && x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa == "AJ").ToList(); // var valorMarkupServico = (itemServico.Where(x => x.LancamentoFinanceiro.DescricaoOrigemLancamento == "FT").ToList().Sum(x => x.VlLancamento) * (Math.Round(servicoContratadoRelatorioRentabilidadeModel.VlMarkup / 100, 2))); var valorMarkupServico = valorRelatorio.VlFat * (Math.Round(servicoContratadoRelatorioRentabilidadeModel.VlMarkup / 100, 2)); var valorMarkupServicoIr = valorRelatorio.VlFatIr * (Math.Round(servicoContratadoRelatorioRentabilidadeModel.VlMarkup / 100, 2)); var valorMarkupRepasse = Math.Round((lancamentosValidos.Sum(x => (x.VlInc.Value - x.VlDesc.Value)) * (servicoContratadoRelatorioRentabilidadeModel.VlMarkup / 100)), 2); valorRelatorio.VlMarkUp = valorMarkupServico + valorMarkupRepasse; valorRelatorio.VlMarkUpIr = valorMarkupServicoIr + valorMarkupRepasse; }
private void CalcularValorDespesasGerais(ValoresRelatorioRentabilidadeDto valorRelatorio, IGrouping <int?, ItemLancamentoFinanceiro> itemServico, ServicoContratadoRelatorioRentabilidadeModel servico, List <ItemLancamentoFinanceiro> itensLancamentosRepassesPagos, List <RepasseRelatorioRentabilidadeModel> repassesPagos, List <CelulaEacesso> celulas) { var tiposValidos = new string[] { "DG", "DF" }; var somenteCompras = itemServico.Where(x => x.LancamentoFinanceiro.DescricaoOrigemLancamento == "CP").ToList(); somenteCompras = somenteCompras.Where(x => x.LancamentoFinanceiro.IdTipoDespesa != null && tiposValidos.Contains(x.LancamentoFinanceiro.TipoDespesa.SgTipoDespesa) && (x.LancamentoFinanceiro.DescOrigemCompraEacesso != "GPD" || x.LancamentoFinanceiro.DescOrigemCompraEacesso == null) ).ToList(); valorRelatorio.VlDespGeral += somenteCompras.Sum(x => x.VlLancamento); var repassesPorServico = repassesPagos.Where(x => x.IdServicoContratado == itemServico.Key).Select(x => x.Id).ToList(); CalcularValorDespesasGeraisRepasse(valorRelatorio, servico, itensLancamentosRepassesPagos.Where(x => repassesPorServico.Contains(x.IdRepasse.Value)).ToList(), celulas); }