internal override void SalvarDados()
        {
            TicketsDeProducao repositorio = new TicketsDeProducao();
            repositorio.SalvarLista(tickets);

            carga.AdicionarDetalhe("Carga realizada com sucesso.",
                                     "Carga de tickets unitários de produção nome: " + carga.NomeArquivo + " .", 0, TipoDetalheEnum.sucesso);
        }
        public void InserirTicketDeProducao()
        {
            var novo = new Departamentos().ObterPor("COPA");

            TicketsDeProducao tickets = new TicketsDeProducao();
            foreach (var setor in novo.Setores)
            {
                foreach (var subSetor in setor.SubSetores)
                {
                    var ticket = new TicketDeProducao(setor, subSetor, (Hospital)novo);
                    tickets.Salvar(ticket);
                }
            }
        }
        private void PreencherReceitaBruta()
        {
            Orcamentos orcamentos = new Orcamentos();
            OrcamentoHospitalar = orcamentos.ObterOrcamentoHospitalarFinal(Departamento);

            if (OrcamentoHospitalar != null)
            {
                var tickets = new TicketsDeProducao();
                TicketsDeReceita ticketsDeReceita = new TicketsDeReceita();
                var ticketDeReceita = ticketsDeReceita.Obter(this.Departamento, TipoTicketDeReceita.ReajusteDeConvenios);

                OrcamentoHospitalar.CalcularReceitaLiquida(tickets.Todos(OrcamentoHospitalar.Setor).ToList(), ticketDeReceita.Parcelas.ToList());

                FatoresDeReceitaBruta = new List<FatorReceitaDTO>();

                foreach (var fatorReceita in OrcamentoHospitalar.FatoresReceita)
                {
                    FatorReceitaDTO fator = new FatorReceitaDTO();
                    fator.Incrementos = new List<IncrementoDaComplexidadeDTO>();

                    foreach (var item in fatorReceita.Incrementos)
                    {
                        if (fator.Incrementos.Any(i => i.Mes == item.Mes))
                            fator.Incrementos.Where(i => i.Mes == item.Mes).FirstOrDefault().ReceitaLiquida += item.ReceitaLiquida;
                        else
                            fator.Incrementos.Add(new IncrementoDaComplexidadeDTO() { Mes = item.Mes, ReceitaLiquida = item.ReceitaLiquida });
                    }

                    FatoresDeReceitaBruta.Add(fator);
                }
                for (int i = 1; i < 13; i++)
                {
                    var ltlReceitaBruta = (Literal)divDre.FindControl("ltlReceitaBruta" + i.ToString());

                    ltlReceitaBruta.Text = (FatoresDeReceitaBruta.Sum(f => f.Incrementos.Where(p => p.Mes == (MesEnum)i).Sum(incremento => incremento.ReceitaLiquida)) / 1000).ToString("#,###,###,###0");

                    receitasNoAno.Where(r => r.Mes == (MesEnum)i).FirstOrDefault().Valor =
                        FatoresDeReceitaBruta.Sum(
                            f =>
                            f.Incrementos.Where(p => p.Mes == (MesEnum)i).Sum(incremento => incremento.ReceitaLiquida));
                }

                receitaBrutaTotal = (FatoresDeReceitaBruta.Sum(f => f.Incrementos.Sum(incremento => incremento.ReceitaLiquida)) / 1000);

                ltlReceitaBrutaTotal.Text = receitaBrutaTotal.ToString("#,###,###,###0");
            }
            else
            {
                for (int i = 1; i < 13; i++)
                {
                    var ltlReceitaBruta = (Literal)divDre.FindControl("ltlReceitaBruta" + i.ToString());

                    ltlReceitaBruta.Text = "0";
                }

                ltlReceitaBrutaTotal.Text = "0";
            }
        }
        private void ValidarTicket()
        {
            var tickets = new TicketsDeProducao();

            Tickets = new List<TicketDeProducao>();

            foreach (TicketDeProducaoExcel ticketDeProducaoExcel in ticketsUnitariosDeProducao)
            {
                // TODO: evitar que busque + de uma vez o mesmo ticket de produção (pasar pra outro lugar)
                if (!Tickets.Any(t => t.Hospital.Nome == ticketDeProducaoExcel.Departamento && t.Setor.NomeSetor == ticketDeProducaoExcel.setor && t.SubSetor.NomeSetor == ticketDeProducaoExcel.subSetor))
                    Tickets.AddRange(tickets.Todos(ticketDeProducaoExcel.DepartamentoEntidade).ToList());

                Especificacao especificacaoTicket =
                    FabricaDeEspeficicacaoTicket.ObterEspeficicacao(ticketDeProducaoExcel, Tickets);

                if (especificacaoTicket.IsSatisfiedBy(carga))
                {
                    TicketDeProducao ticket =
                        Tickets.FirstOrDefault(t => t.Setor.NomeSetor == ticketDeProducaoExcel.setor && t.SubSetor.NomeSetor == ticketDeProducaoExcel.subSetor);
                    ticketDeProducaoExcel.SetorHospitalar = ticket.Setor;
                    ticketDeProducaoExcel.SubSetorHospital = ticket.SubSetor;
                    ticketDeProducaoExcel.Ticket = ticket;
                }
            }
        }
 private void PreencherUnitarios()
 {
     var tickets = new TicketsDeProducao();
     List<Orcamento.Domain.TicketDeProducao> ticketsDeHospital = tickets.Todos(Orcamento.Setor).ToList();
     RptUnitarios.DataSource = ticketsDeHospital.OrderBy(x => x.Setor.NomeSetor).ThenBy(y => y.SubSetor.NomeSetor);
     RptUnitarios.DataBind();
 }
        public void PreencherReceitaBruta()
        {
            var tickets = new TicketsDeProducao();

            TicketsDeReceita ticketsDeReceita = new TicketsDeReceita();
            var ticketDeReceita = ticketsDeReceita.Obter(this.Departamento, TipoTicketDeReceita.ReajusteDeConvenios);

            Orcamento.CalcularReceitaLiquida(tickets.Todos(Orcamento.Setor).ToList(), ticketDeReceita.Parcelas.ToList());

            List<FatorReceitaDTO> fatoresDeReceita = new List<FatorReceitaDTO>();

            foreach (var fatorReceita in Orcamento.FatoresReceita.Where(g => g.Setor.NomeSetor != "Centro Cirúrgico").GroupBy(f => f.Setor))
            {

                var fator = new FatorReceitaDTO { Setor = fatorReceita.Key.NomeSetor, SubSetor = fatorReceita.Key.NomeSetor, Id = fatorReceita.Key.Id };

                fator.Incrementos = new List<IncrementoDaComplexidadeDTO>();

                foreach (var item in fatorReceita.Select(f => f.Incrementos).GroupBy(i => i.GroupBy(b => b.Mes)))
                {
                    foreach (var item1 in item)
                    {
                        foreach (var item2 in item1)
                        {
                            if (fator.Incrementos.Any(i => i.Mes == item2.Mes))
                                fator.Incrementos.Where(i => i.Mes == item2.Mes).FirstOrDefault().ReceitaLiquida += item2.ReceitaLiquida;
                            else
                                fator.Incrementos.Add(new IncrementoDaComplexidadeDTO() { Mes = item2.Mes, ReceitaLiquida = item2.ReceitaLiquida });
                        }
                    }
                }

                fatoresDeReceita.Add(fator);
            }

            foreach (var fatorReceita in Orcamento.FatoresReceita.Where(g => g.Setor.NomeSetor == "Centro Cirúrgico"))
            {
                var fator = new FatorReceitaDTO { Setor = fatorReceita.Setor.NomeSetor, SubSetor = fatorReceita.SubSetor.NomeSetor, Id = fatorReceita.Setor.Id };

                fator.Incrementos = new List<IncrementoDaComplexidadeDTO>();
                foreach (var item in fatorReceita.Incrementos)
                {
                    fator.Incrementos.Add(new IncrementoDaComplexidadeDTO() { Mes = item.Mes, ReceitaLiquida = item.ReceitaLiquida });

                }

                fatoresDeReceita.Add(fator);
            }

            rptReceitaBruta.DataSource = fatoresDeReceita.OrderBy(x => x.Setor).ThenBy(y => y.SubSetor);
            rptReceitaBruta.DataBind();
        }
        protected void btnCalcularTotalMensal_Click(object sender, EventArgs e)
        {
            List<ContaHospitalarDTO> contas = PreencherServicosHospitalares();
            PreencherComplexidadeNoOrcamento();
            preencherOrcamento(Orcamento, contas);
            var tickets = new TicketsDeProducao();
            TicketsDeReceita ticketsDeReceita = new TicketsDeReceita();
            var ticketDeReceita = ticketsDeReceita.Obter(this.Departamento, TipoTicketDeReceita.ReajusteDeConvenios);

            Orcamento.CalcularReceitaLiquida(tickets.Todos(Orcamento.Setor).ToList(),ticketDeReceita.Parcelas.ToList());
            var lista = new List<TotalizadorCalculo>();

            for (int i = 1; i < 13; i++)
            {
                lista.Add(new TotalizadorCalculo { Mes = (MesEnum)i, Valor = 0 });
            }

            foreach (FatorReceita fator in Orcamento.FatoresReceita)
            {
                foreach (IncrementoDaComplexidade incremento in fator.Incrementos)
                {
                    lista.Where(l => l.Mes == incremento.Mes).FirstOrDefault().Valor += incremento.ReceitaLiquida;
                }
            }
            for (int i = 1; i < 13; i++)
            {
                var literalTotalMensal = (Literal)tabelaDeRodapeFixo.FindControl("ltlTotalMes" + i.ToString());

                literalTotalMensal.Text = lista.Where(l => l.Mes == (MesEnum)i).FirstOrDefault().Valor.ToString("#,###,###,###0.##");
            }

            var totalAno = (Literal)tabelaDeRodapeFixo.FindControl("ltlTotalAno");

            totalAno.Text = lista.Sum(l => l.Valor).ToString("#,###,###,###0.##");
        }
        public override void CalcularTotalDRE()
        {
            this.Legenda = "Orçamento Hospitalar";
            TicketsDeProducao tickets = new TicketsDeProducao();
            TicketsDeReceita ticketsDeReceita = new TicketsDeReceita();

            var ticketDeReceita = ticketsDeReceita.Obter(this.Setor, TipoTicketDeReceita.ReajusteDeConvenios);

            this.CalcularReceitaLiquida(tickets.Todos(this.Setor).ToList(), ticketDeReceita.Parcelas.ToList());
            this.ValorTotalDRE = FatoresReceita.Sum(x => x.Incrementos.Sum(y => y.ReceitaLiquida));
        }
        public void InserirTicketsDePessoal(Departamento departamento)
        {
            TicketsDeProducao tickets = new TicketsDeProducao();
            NovosOrcamentosPessoais orcamentos = new NovosOrcamentosPessoais();
            GruposDeConta grupos = new GruposDeConta();

            var encargosSociais = grupos.ObterPor("Encargos Sociais");
            var remuneracao = grupos.ObterPor("Remuneração");
            var beneficios = grupos.ObterPor("Benefícios");

            var ticketDeAlimentacao = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.Alimentação, Descricao = "Alimentação", Valor = 300 };
            var ticketDeAssistenciaMedica = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AssistenciaMedica, Descricao = "Assistência Médica", Valor = 300 };
            var ticketAssistencia = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AssistenciaOdontologica, Descricao = "Assistência Odontológica", Valor = 50 };
            var ticketDeBeneficios = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.OutrosBeneficios, Descricao = "Outros Benefícios", Valor = 50 };
            var ticketTreinamentoPessoal = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.TreinamentoPessoal, Descricao = "Treinamento Pessoal", Valor = 50 };
            var ticketValeTransporte = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.ValeDeTransporte, Descricao = "Vale de Transporte", Valor = 150 };
            var ticketDeOutrasDespesas = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.OutrasDespesas, Descricao = "Outras Despesas", Valor = 50 };

            var adicionalNoturno = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AdicionalNoturno, Descricao = "Adicional Noturno", Valor = 4 };
            var insalubridade = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AdicionalDeInsalubridade, Descricao = "Adicional de Insalubridade", Valor = 10 };
            var periculosidade = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AdicionaDePericulosidade, Descricao = "Adicional de Periculosidade", Valor = 1 };
            var gratificacoes = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.Gratificacoes, Descricao = "Gratificações", Valor = 1 };
            var horasExtras = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.HorasExtras, Descricao = "Horas Extras", Valor = 2 };
            var sobreaviso = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AdicionalDeSobreaviso, Descricao = "Adicional de Sobreaviso", Valor = 0 };
            var indenizacao = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.Indenizacao, Descricao = "Indenização", Valor = 235 };
            var bolsaDeEstagio = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.BolsaDeEstagio, Descricao = "Bolsa de Estágio", Valor = 0 };
            var fgts = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.FGTS, Descricao = "FGTS", Valor = 8 };
            var inss = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.INSS, Descricao = "INSS", Valor = 28 };

            foreach (var centroDeCusto in departamento.CentrosDeCusto)
            {
                if (!centroDeCusto.GrupoDeContas.Any(g => g.Id == beneficios.Id))
                    centroDeCusto.Adicionar(beneficios);

                if (!centroDeCusto.GrupoDeContas.Any(g => g.Id == remuneracao.Id))
                    centroDeCusto.Adicionar(remuneracao);

                if (!centroDeCusto.GrupoDeContas.Any(g => g.Id == encargosSociais.Id))
                    centroDeCusto.Adicionar(encargosSociais);
            }

            tickets.Salvar(ticketDeAlimentacao);
            tickets.Salvar(ticketDeAssistenciaMedica);
            tickets.Salvar(ticketAssistencia);
            tickets.Salvar(ticketDeBeneficios);
            tickets.Salvar(ticketTreinamentoPessoal);
            tickets.Salvar(ticketValeTransporte);
            tickets.Salvar(ticketDeOutrasDespesas);

            tickets.Salvar(adicionalNoturno);
            tickets.Salvar(insalubridade);
            tickets.Salvar(periculosidade);
            tickets.Salvar(gratificacoes);
            tickets.Salvar(horasExtras);
            tickets.Salvar(sobreaviso);
            tickets.Salvar(indenizacao);
            tickets.Salvar(bolsaDeEstagio);
            tickets.Salvar(fgts);
            tickets.Salvar(inss);
        }
 public void InserirTicketDeProducao(Departamento departamento)
 {
     TicketsDeProducao tickets = new TicketsDeProducao();
     foreach (var setor in departamento.Setores)
     {
         foreach (var subSetor in setor.SubSetores)
         {
             var ticket = new TicketDeProducao(setor, subSetor, (Hospital)departamento);
             tickets.Salvar(ticket);
         }
     }
 }
        private void PreencherUnitarios()
        {
            int id = int.Parse(Session["DepartamentoLogadoId"].ToString());

            Departamentos departamentos = new Departamentos();
            Departamento = departamentos.Obter(id);

            if (Departamento.GetType() != typeof(Hospital))
                Response.Redirect("/PainelOrcamento.aspx");

            TicketsDeProducao tickets = new TicketsDeProducao();
            Tickets = tickets.Todos(Departamento);

            TicketsDeReceita ticketsDeReceita = new Orcamento.Domain.DB.Repositorio.TicketsDeReceita();
            TicketsDeReceita = ticketsDeReceita.Todos(Departamento);

            RptUnitarios.DataSource = Tickets.OrderBy(x => x.Setor.NomeSetor).ThenBy(y => y.SubSetor.NomeSetor);
            RptUnitarios.DataBind();

            rptTipoDeTickets.DataSource = TicketsDeReceita.OrderBy(t => t.Nome);
            rptTipoDeTickets.DataBind();
        }
        private void SalvarUnitarios()
        {
            TicketsDeProducao tickets = new TicketsDeProducao();

            foreach (var ticket in Tickets)
            {
                tickets.Salvar(ticket);
            }
        }
        public void l_InserirContasEGrupoDeContasNosDepartamentos()
        {
            var tiposConta = new TiposConta();
            var tipoContaBeneficios = new TipoConta { Nome = "Beneficios" };
            tiposConta.Adicionar(tipoContaBeneficios);

            Departamentos departamentos = new Departamentos();
            var listaDepartamentos = departamentos.Todos();

            var tipoContaFGTS = new TipoConta { Nome = "FGTS" };
            var tipoContaINSS = new TipoConta { Nome = "INSS" };
            var tipoContaFerias = new TipoConta { Nome = "Férias" };
            var tipoContaIndenizacao = new TipoConta { Nome = "Indenização" };
            var tipoContaDecimoTerceiro = new TipoConta { Nome = "Décimo Terceiro" };
            var tipoContaSalario = new TipoConta { Nome = "Salário" };
            var tipoContaBolsasDeEstagio = new TipoConta { Nome = "Bolsas de Estágio" };
            var tipoContaExtras = new TipoConta { Nome = "Extras" };

            tiposConta.Adicionar(tipoContaFGTS);
            tiposConta.Adicionar(tipoContaINSS);
            tiposConta.Adicionar(tipoContaFerias);
            tiposConta.Adicionar(tipoContaIndenizacao);
            tiposConta.Adicionar(tipoContaDecimoTerceiro);
            tiposConta.Adicionar(tipoContaSalario);
            tiposConta.Adicionar(tipoContaBolsasDeEstagio);
            tiposConta.Adicionar(tipoContaExtras);
            var gruposDeConta = new GruposDeConta();
            var encargosSociais = new GrupoDeConta("Encargos Sociais");
            var remuneracao = new GrupoDeConta("Remuneração");
            var beneficios = new GrupoDeConta("Benefícios");

            gruposDeConta.Salvar(beneficios);
            gruposDeConta.Salvar(remuneracao);
            gruposDeConta.Salvar(encargosSociais);

            var contaAlimentacao = new Conta("Alimentação", tipoContaBeneficios);
            contaAlimentacao.Adicionar(TipoTicketDePessoal.Alimentação);

            var contaAssistenciaMedica = new Conta("Assistência Médica", tipoContaBeneficios);
            contaAssistenciaMedica.Adicionar(TipoTicketDePessoal.AssistenciaMedica);

            var contaOutrosBeneficios = new Conta("Outros Benefícios", tipoContaBeneficios);
            contaOutrosBeneficios.Adicionar(TipoTicketDePessoal.OutrosBeneficios);

            var contaTreinamentoPessoal = new Conta("Treinamento Pessoal", tipoContaBeneficios);
            contaTreinamentoPessoal.Adicionar(TipoTicketDePessoal.TreinamentoPessoal);

            var contaValeDeTransporte = new Conta("Vale de Transporte", tipoContaBeneficios);
            contaValeDeTransporte.Adicionar(TipoTicketDePessoal.ValeDeTransporte);

            var contaOutrasDespesas = new Conta("Outras Despesas", tipoContaBeneficios);
            contaOutrasDespesas.Adicionar(TipoTicketDePessoal.OutrasDespesas);

            var contaAssistenciaOdontologica = new Conta("Assistência Odontológica", tipoContaBeneficios);
            contaAssistenciaOdontologica.Adicionar(TipoTicketDePessoal.AssistenciaOdontologica);

            beneficios.Adicionar(contaAlimentacao);
            beneficios.Adicionar(contaAssistenciaMedica);
            beneficios.Adicionar(contaAssistenciaOdontologica);
            beneficios.Adicionar(contaOutrosBeneficios);
            beneficios.Adicionar(contaTreinamentoPessoal);
            beneficios.Adicionar(contaValeDeTransporte);
            beneficios.Adicionar(contaOutrasDespesas);

            var contaFGTS = new Conta("FGTS", tipoContaFGTS);
            contaFGTS.Adicionar(TipoTicketDePessoal.FGTS);
            encargosSociais.Adicionar(contaFGTS);

            var contaINSS = new Conta("INSS", tipoContaINSS);
            contaINSS.Adicionar(TipoTicketDePessoal.INSS);
            encargosSociais.Adicionar(contaINSS);

            var contaFerias = new Conta("Férias", tipoContaFerias);
            encargosSociais.Adicionar(contaFerias);

            var contaIndenizacao = new Conta("Indenização", tipoContaIndenizacao);
            encargosSociais.Adicionar(contaIndenizacao);

            var contaDecimoTerceiro = new Conta("Décimo Terceiro", tipoContaDecimoTerceiro);
            encargosSociais.Adicionar(contaDecimoTerceiro);

            foreach (var conta in encargosSociais.Contas)
            {
                if (conta.Nome == "Indenização")
                {
                    conta.Adicionar(TipoTicketDePessoal.Indenizacao);
                }
                else
                {
                    if (conta.Nome == "INSS" || conta.Nome == "FGTS")
                        conta.Adicionar(TipoTicketDePessoal.AdicionalDeSobreaviso);

                    conta.Adicionar(TipoTicketDePessoal.AdicionalNoturno);
                    conta.Adicionar(TipoTicketDePessoal.AdicionalDeInsalubridade);
                    conta.Adicionar(TipoTicketDePessoal.AdicionaDePericulosidade);
                    conta.Adicionar(TipoTicketDePessoal.Gratificacoes);
                    conta.Adicionar(TipoTicketDePessoal.HorasExtras);
                }
            }

            remuneracao.Adicionar(new Conta("Salário", tipoContaSalario));

            var contaBolsaDeEstagio = new Conta("Bolsas Estágio", tipoContaBolsasDeEstagio);
            contaBolsaDeEstagio.Adicionar(TipoTicketDePessoal.BolsaDeEstagio);
            remuneracao.Adicionar(contaBolsaDeEstagio);

            var contaAdicionalNoturno = new Conta("Adicional Noturno", tipoContaExtras);
            contaAdicionalNoturno.Adicionar(TipoTicketDePessoal.AdicionalNoturno);
            remuneracao.Adicionar(contaAdicionalNoturno);

            var contaPericulosidade = new Conta("Periculosidade", tipoContaExtras);
            contaPericulosidade.Adicionar(TipoTicketDePessoal.AdicionaDePericulosidade);
            remuneracao.Adicionar(contaPericulosidade);

            var contaInsalubridade = new Conta("Insalubridade", tipoContaExtras);
            contaInsalubridade.Adicionar(TipoTicketDePessoal.AdicionalDeInsalubridade);
            remuneracao.Adicionar(contaInsalubridade);

            var contaHorasExtras = new Conta("Horas Extras", tipoContaExtras);
            contaHorasExtras.Adicionar(TipoTicketDePessoal.HorasExtras);
            remuneracao.Adicionar(contaHorasExtras);

            var contaGratificacoes = new Conta("Gratificações", tipoContaExtras);
            contaGratificacoes.Adicionar(TipoTicketDePessoal.Gratificacoes);
            remuneracao.Adicionar(contaGratificacoes);

            Contas contas = new Orcamento.Domain.Contas();

            contas.Salvar(contaGratificacoes);
            contas.Salvar(contaHorasExtras);
            contas.Salvar(contaInsalubridade);
            contas.Salvar(contaPericulosidade);
            contas.Salvar(contaAdicionalNoturno);
            contas.Salvar(contaBolsaDeEstagio);
            contas.Salvar(contaDecimoTerceiro);
            contas.Salvar(contaIndenizacao);
            contas.Salvar(contaFerias);
            contas.Salvar(contaINSS);
            contas.Salvar(contaFGTS);
            contas.Salvar(contaAssistenciaOdontologica);
            contas.Salvar(contaOutrasDespesas);
            contas.Salvar(contaValeDeTransporte);
            contas.Salvar(contaTreinamentoPessoal);
            contas.Salvar(contaOutrosBeneficios);
            contas.Salvar(contaAssistenciaMedica);
            contas.Salvar(contaAlimentacao);
            contas.Salvar(contaAssistenciaMedica);
            contas.Salvar(contaAssistenciaMedica);
            contas.Salvar(contaAssistenciaMedica);
            contas.Salvar(contaAssistenciaMedica);

            TicketsDeProducao tickets = new TicketsDeProducao();
            NovosOrcamentosPessoais orcamentos = new NovosOrcamentosPessoais();

            foreach (var departamento in listaDepartamentos)
            {

                var ticketDeAlimentacao = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.Alimentação, Descricao = "Alimentação", Valor = 300 };
                var ticketDeAssistenciaMedica = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AssistenciaMedica, Descricao = "Assistência Médica", Valor = 300 };
                var ticketAssistencia = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AssistenciaOdontologica, Descricao = "Assistência Odontológica", Valor = 50 };
                var ticketDeBeneficios = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.OutrosBeneficios, Descricao = "Outros Benefícios", Valor = 50 };
                var ticketTreinamentoPessoal = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.TreinamentoPessoal, Descricao = "Treinamento Pessoal", Valor = 50 };
                var ticketValeTransporte = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.ValeDeTransporte, Descricao = "Vale de Transporte", Valor = 150 };
                var ticketDeOutrasDespesas = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.OutrasDespesas, Descricao = "Outras Despesas", Valor = 50 };

                var adicionalNoturno = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AdicionalNoturno, Descricao = "Adicional Noturno", Valor = 4 };
                var insalubridade = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AdicionalDeInsalubridade, Descricao = "Adicional de Insalubridade", Valor = 10 };
                var periculosidade = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AdicionaDePericulosidade, Descricao = "Adicional de Periculosidade", Valor = 1 };
                var gratificacoes = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.Gratificacoes, Descricao = "Gratificações", Valor = 1 };
                var horasExtras = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.HorasExtras, Descricao = "Horas Extras", Valor = 2 };
                var sobreaviso = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.AdicionalDeSobreaviso, Descricao = "Adicional de Sobreaviso", Valor = 0 };
                var indenizacao = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.Indenizacao, Descricao = "Indenização", Valor = 235 };
                var bolsaDeEstagio = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.BolsaDeEstagio, Descricao = "Bolsa de Estágio", Valor = 0 };
                var fgts = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.FGTS, Descricao = "FGTS", Valor = 8 };
                var inss = new TicketDeOrcamentoPessoal(departamento) { Ticket = TipoTicketDePessoal.INSS, Descricao = "INSS", Valor = 28 };

                foreach (var centroDeCusto in departamento.CentrosDeCusto)
                {
                    if (!centroDeCusto.GrupoDeContas.Any(g => g.Id == beneficios.Id))
                        centroDeCusto.Adicionar(beneficios);

                    if (!centroDeCusto.GrupoDeContas.Any(g => g.Id == remuneracao.Id))
                        centroDeCusto.Adicionar(remuneracao);

                    if (!centroDeCusto.GrupoDeContas.Any(g => g.Id == encargosSociais.Id))
                        centroDeCusto.Adicionar(encargosSociais);
                }

                tickets.Salvar(ticketDeAlimentacao);
                tickets.Salvar(ticketDeAssistenciaMedica);
                tickets.Salvar(ticketAssistencia);
                tickets.Salvar(ticketDeBeneficios);
                tickets.Salvar(ticketTreinamentoPessoal);
                tickets.Salvar(ticketValeTransporte);
                tickets.Salvar(ticketDeOutrasDespesas);

                tickets.Salvar(adicionalNoturno);
                tickets.Salvar(insalubridade);
                tickets.Salvar(periculosidade);
                tickets.Salvar(gratificacoes);
                tickets.Salvar(horasExtras);
                tickets.Salvar(sobreaviso);
                tickets.Salvar(indenizacao);
                tickets.Salvar(bolsaDeEstagio);
                tickets.Salvar(fgts);
                tickets.Salvar(inss);

                List<NovoOrcamentoPessoal> orcamentosPessoais = new List<NovoOrcamentoPessoal>();

                foreach (var centroDeCusto in departamento.CentrosDeCusto)
                {
                    var orcamento = new NovoOrcamentoPessoal(departamento, centroDeCusto, 2014);

                    orcamento.Adicionar(ticketDeAlimentacao);
                    orcamento.Adicionar(ticketDeAssistenciaMedica);
                    orcamento.Adicionar(ticketAssistencia);
                    orcamento.Adicionar(ticketDeBeneficios);
                    orcamento.Adicionar(ticketTreinamentoPessoal);
                    orcamento.Adicionar(ticketValeTransporte);
                    orcamento.Adicionar(ticketDeOutrasDespesas);

                    orcamento.Adicionar(adicionalNoturno);
                    orcamento.Adicionar(insalubridade);
                    orcamento.Adicionar(periculosidade);
                    orcamento.Adicionar(gratificacoes);
                    orcamento.Adicionar(horasExtras);
                    orcamento.Adicionar(sobreaviso);
                    orcamento.Adicionar(indenizacao);
                    orcamento.Adicionar(bolsaDeEstagio);
                    orcamento.Adicionar(fgts);
                    orcamento.Adicionar(inss);

                    orcamentosPessoais.Add(orcamento);
                }

                orcamentos.SalvarLista(orcamentosPessoais);
                departamentos.Salvar(departamento);
            }
        }