private static void AdicionarDespesaDeViagem(List<DespesaTotalizadorDTO> despesas, long despesaDeViagem) { DespesaTotalizadorDTO despesaDeViagemDTO = new DespesaTotalizadorDTO(); despesaDeViagemDTO.NomeDespesa = "Despesa De Viagem"; if (despesaDeViagem != null) despesaDeViagemDTO.ValorTotalDespesa = despesaDeViagem; else despesaDeViagemDTO.ValorTotalDespesa = 0; despesas.Add(despesaDeViagemDTO); }
public void PreencherOrcamentos(IList<Orcamento.Domain.Orcamento> listaOrcamentos) { List<object> objetos = new List<object>(); List<DespesaTotalizadorDTO> despesas = new List<DespesaTotalizadorDTO>(); var despesaDeViagem = listaOrcamentos.Where(a => a.Tipo == TipoOrcamentoEnum.Viagem && a.VersaoFinal).Sum(c => c.ValorTotal); var despesasOperacionais = listaOrcamentos.Where(a => a.Tipo == TipoOrcamentoEnum.DespesaOperacional && a.VersaoFinal).GroupBy( a => a.DespesasOperacionais); foreach ( var despesa in despesasOperacionais.Select(a => a).Where(i => i.Key != null).GroupBy( b => b.Key.GroupBy(c => c.Conta)).ToList()) { foreach (var item in despesa) { foreach (var item1 in item) { foreach (var item2 in item1.DespesasOperacionais) { if (despesas.Exists(d => d.Id == item2.Conta.Id)) { despesas.Where(d => d.Id == item2.Conta.Id).FirstOrDefault().ValorTotalDespesa += item2.Valor; } else { DespesaTotalizadorDTO despesaDto = new DespesaTotalizadorDTO(); despesaDto.ValorTotalDespesa = item2.Valor; despesaDto.NomeDespesa = item2.Conta.Nome; despesaDto.Id = item2.Conta.Id; despesas.Add(despesaDto); } } } } } var contas = this.SetorSelecionado.CentrosDeCusto.GroupBy(c => c.Contas.GroupBy(u => u)).ToList(); var contasFiltradas = contas.Where(c => c.All(b => despesas.All(d => d.Id != b.Id))).GroupBy(c => c.GroupBy(u => u)).ToList(); foreach (var conta in contasFiltradas) { foreach (var conta1 in conta) { foreach (var item in conta1) { foreach (var item1 in item.Contas) { if (despesas.Exists(d => d.Id == item1.Id)) continue; DespesaTotalizadorDTO despesaDto = new DespesaTotalizadorDTO(); despesaDto.NomeDespesa = item1.Nome; despesaDto.ValorTotalDespesa = 0; despesaDto.Id = item1.Id; despesas.Add(despesaDto); } } } } if (SetorSelecionado.GetType() == typeof(Setor)) { // AdicionarDespesaDeViagem(despesas, despesaDeViagem); DespesaTotalizadorDTO ViagemHospedagem = new DespesaTotalizadorDTO(); ViagemHospedagem.NomeDespesa = "VIAGEM/HOSPEDAGEM"; if (despesaDeViagem > 0) { ViagemHospedagem.ValorTotalDespesa = listaOrcamentos.Where(a => a.Tipo == TipoOrcamentoEnum.Viagem && a.VersaoFinal).Sum(a => a.Despesas.Sum(d => d.ValorTotalPassagem + d.ValorTotalDiaria)); despesas.Where(d => d.NomeDespesa == "CONDUCAO (TAXI,METRO,ONIBUS E TREM)").FirstOrDefault().ValorTotalDespesa += listaOrcamentos.Where(a => a.Tipo == TipoOrcamentoEnum.Viagem && a.VersaoFinal).Sum(a => a.Despesas.Sum(d => d.ValorTotalTaxi)); despesas.Where(d => d.NomeDespesa == "LANCHES E REFEICOES").FirstOrDefault().ValorTotalDespesa += listaOrcamentos.Where(a => a.Tipo == TipoOrcamentoEnum.Viagem && a.VersaoFinal).Sum(a => a.Despesas.Sum(d => d.ValorTotalRefeicao)); } else ViagemHospedagem.ValorTotalDespesa = 0; despesas.Add(ViagemHospedagem); } Despesas = despesas; rptOrcamentos.DataSource = Despesas.OrderBy(x => x.NomeDespesa); rptOrcamentos.DataBind(); }