public virtual OrcamentoDeViagem CriarOrcamentoDeViagem(List<Orcamento> orcamentosGerenciamento, Departamento departamento, CentroDeCusto centroDeCusto, int ano)
        {
            Contract.Requires(centroDeCusto != null, "Centro de custo não informado.");
            Contract.Requires(departamento != null, "Departamento não informado.");

            var viagens = Viagens.Todos().ToList();
            var diarias = Diarias.Todos().ToList();

            OrcamentoDeViagem orcamento = new OrcamentoDeViagem(departamento, centroDeCusto, ano);
            orcamento.CriarDespesas(viagens, diarias);

            if (orcamentosGerenciamento == null)
                orcamentosGerenciamento = new List<Orcamento>();

            GerenciadorDeOrcamentos gerenciador = new GerenciadorDeOrcamentos();

            if (!gerenciador.PodeCriarOrcamento(orcamentosGerenciamento, departamento, centroDeCusto, TipoOrcamentoEnum.Viagem))
                throw new Exception("Orçamento já tem dez versões");

            orcamentosGerenciamento.Add(orcamento);

            gerenciador.InformarNomeOrcamento(orcamentosGerenciamento, orcamento, departamento, centroDeCusto, TipoOrcamentoEnum.Viagem);

            foreach (var orcamentoGerenciamento in orcamentosGerenciamento)
            {
                Orcamentos.Salvar(orcamentoGerenciamento);
            }

            return orcamento;
        }
        public void OrcamentoDeViagemCriadoComDuasCidadesDuasViagensEDuasDiariasDeveTerDespesasCountIgualAQuarentaEOito()
        {
            Departamento Ti = new Setor("TI");
            var gerenciamentoDeProjetos = new CentroDeCusto("Gerenciamento de Projetos");
            var recursosExternos = new Conta("RecursosExternos", new TipoConta{Id = (int)TipoContaEnum.Outros});
            var luz = new Conta("Luz", new TipoConta{Id = (int) TipoContaEnum.Outros});

            gerenciamentoDeProjetos.AdicionarConta(luz);
            gerenciamentoDeProjetos.AdicionarConta(recursosExternos);

            Ti.AdicionarCentroDeCusto(gerenciamentoDeProjetos);

            var orcamentoDeViagem = new OrcamentoDeViagem(Ti, gerenciamentoDeProjetos, 2014);
            InserirCidadesTiposTicketETicketEViagem();
            InserirDiarias();
            InserirViagens();
            InserirTipoTickets();
            InserirTickets();

            orcamentoDeViagem.CriarDespesas(Viagens, Diarias);
            Assert.IsTrue(orcamentoDeViagem.Despesas.Count == 48);
        }