public IList<OrcamentoPessoalDTO> ObterTotalizadorDePessoalPor(int centroDeCustoId, Departamento departamento)
        {
            var centroDeCusto = CentrosDeCusto.Obter<CentroDeCusto>(centroDeCustoId);
            var servicoCalculaPessoal = new ServicoGerarOrcamentoPessoalPorCentroDeCusto();
            servicoCalculaPessoal.CentroDeCusto = centroDeCusto;
            servicoCalculaPessoal.Departamento = departamento;

            servicoCalculaPessoal.Gerar("");
            return ServicoObterTotalizadorDePessoal.Obter(servicoCalculaPessoal.Orcamento);
        }
        private void PreencherPessoal()
        {
            Orcamentos orcamentos = new Orcamentos();

            OrcamentosPessoal = new List<NovoOrcamentoPessoal>();
            var orcamentosNovos =  new NovosOrcamentosPessoais();
            OrcamentosDeDespesasOperacionais = new List<Orcamento.Domain.Orcamento>();
            foreach (var centro in Departamento.CentrosDeCusto)
            {
                var servicoCalculaPessoal = new ServicoGerarOrcamentoPessoalPorCentroDeCusto();
                servicoCalculaPessoal.CentroDeCusto = centro;
                servicoCalculaPessoal.Departamento = Departamento;

                servicoCalculaPessoal.Gerar("");
                OrcamentosPessoal.Add(servicoCalculaPessoal.Orcamento);
            }

            GruposDeConta grupos = new GruposDeConta();
            var grupoDeContaPessoal = grupos.ObterPor("Pessoal");

            if (receitasNoAno != null)
            {
                var DespesasAgrupadas =
                    OrcamentosDeDespesasOperacionais.Select(
                        c =>
                        c.DespesasOperacionais.Where(
                            d => grupoDeContaPessoal.Contas.Any(g => g.CodigoDaConta == d.Conta.CodigoDaConta))).ToList();

                for (int i = 1; i < 13; i++)
                {

                    var ltlPessoal = (Literal)divDre.FindControl("ltlPessoal" + i.ToString());

                    receitasNoAno.Where(p => p.Mes == (MesEnum)i).FirstOrDefault().ValorDespesaPessoal =
                        DespesasAgrupadas.Sum(d1 => d1.Where(d2 => d2.Mes == (MesEnum)i).Sum(despesa => despesa.Valor));
                    receitasNoAno.Where(p => p.Mes == (MesEnum)i).FirstOrDefault().ValorDespesaPessoal +=
                        OrcamentosPessoal.Where(d=> d.Despesas != null && d.Despesas.Count > 0).Sum(
                            o => o.Despesas.Where(de=> de.Parcelas != null).Sum(d => d.Parcelas.Where(p => p.Mes == i).Sum(p1 => p1.Valor)));

                    ltlPessoal.Text = "(";
                    ltlPessoal.Text += (
                        receitasNoAno.Where(p => p.Mes == (MesEnum)i).FirstOrDefault().ValorDespesaPessoal / 1000).ToString("#,###,###,###0");
                    ltlPessoal.Text += ")";
                }

                ltlPessoalTotal.Text = "(";
                ltlPessoalTotal.Text += (receitasNoAno.Sum(r => r.ValorDespesaPessoal) / 1000).ToString("#,###,###,###0");
                ltlPessoalTotal.Text += ")";
            }
        }
        private List<NovoOrcamentoPessoal> ObterOrcamentos(Orcamento.Domain.Gerenciamento.Departamento departamento)
        {
            List<NovoOrcamentoPessoal> orcamentos = new List<NovoOrcamentoPessoal>();

            foreach (var centro in departamento.CentrosDeCusto)
            {
                var servicoCalculaPessoal = new ServicoGerarOrcamentoPessoalPorCentroDeCusto();
                servicoCalculaPessoal.CentroDeCusto = centro;
                servicoCalculaPessoal.Departamento = departamento;

                servicoCalculaPessoal.Gerar("");
                orcamentos.Add(servicoCalculaPessoal.Orcamento);
            }

            return orcamentos;
        }
        private void PreencherPessoal(Orcamento.Domain.DB.Repositorio.Orcamentos orcamentos, Orcamento.Domain.Gerenciamento.Departamento departamento)
        {
            var orcamentosNovos = new NovosOrcamentosPessoais();

            var OrcamentosDeDespesasOperacionais = new List<NovoOrcamentoPessoal>();

            foreach (var centro in departamento.CentrosDeCusto)
            {
                var orcamentoOperacional = orcamentos.ObterOrcamentoFinalOrcamentoOperacional(centro, departamento);

                var servicoCalculaPessoal = new ServicoGerarOrcamentoPessoalPorCentroDeCusto();
                servicoCalculaPessoal.CentroDeCusto = centro;
                servicoCalculaPessoal.Departamento = departamento;

                servicoCalculaPessoal.Gerar("");
                OrcamentosDeDespesasOperacionais.Add(servicoCalculaPessoal.Orcamento);
            }

            double somaPessoal = OrcamentosDeDespesasOperacionais.Where(d => d.Despesas != null).Sum(o => o.Despesas.Where(de=> de.Parcelas != null)
                .Sum(d => d.Parcelas.Sum(p => p.Valor)));
            PreencherPessoal(somaPessoal);
        }