public void AtualizarDespesas(CentroDeCusto centro) { Orcamentos orcamentos = new Orcamentos(); var orcamentosOperacionais = orcamentos.TodosOrcamentosOperacionaisPor(centro); foreach (var orcamento in orcamentosOperacionais) { orcamento.AtualizarDespesas(); } orcamentos.Salvar(orcamentosOperacionais); }
protected void btnSalvar_Click(object sender, EventArgs e) { try { var antigaListaDeCentrosDeCusto = Controller.BuscarTodosOsCentrosDeCustoDeUmDepartamento(int.Parse(Session["DepartamentoLogadoId"].ToString())); Hospital hospital; if (FuncaoDaPagina == "a") { hospital = Controller.BuscarHospitalPor(int.Parse(ddlHospitais.SelectedValue)); hospital.Nome = txtNome.Text; } else { hospital = new Hospital(); hospital.Nome = txtNome.Text; } foreach (RepeaterItem item in rptCentrosDeCusto.Items) { if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) { if (((CheckBox)item.FindControl("chkSelecionado")).Checked) { int centroDeCustoId = int.Parse(((HiddenField)item.FindControl("hdnIdSetor")).Value); if (!hospital.CentrosDeCusto.Any(c => c.Id == centroDeCustoId)) hospital.Adicionar(controller.ObterCentroDeCustoPor(centroDeCustoId: centroDeCustoId)); } else { int centroDeCustoId = int.Parse(((HiddenField)item.FindControl("hdnIdSetor")).Value); if (hospital.CentrosDeCusto.Any(c => c.Id == centroDeCustoId)) { if (hospital.Id > 0) { var nome = ((HiddenField)item.FindControl("hdnNomeSetor")).Value; Orcamentos orcamentos = new Orcamentos(); var orcamentosDeViagem = orcamentos.TodosOrcamentosDeViagemPor(hospital.CentrosDeCusto.Where(c => c.Id == centroDeCustoId).FirstOrDefault(), hospital); var orcamentosOperacionais = orcamentos.TodosOrcamentosOperacionaisPor(hospital.CentrosDeCusto.Where(c => c.Id == centroDeCustoId).FirstOrDefault(), hospital); var funcionarios = hospital.CentrosDeCusto.Where(c => c.Id == centroDeCustoId).FirstOrDefault().Funcionarios.Where(d => d.Departamento == hospital); if (orcamentosDeViagem != null && orcamentosDeViagem.Count > 0) throw new Exception("Não é possivel Retirar o Centro de Custo:" + nome + " pois ele está atrelado a pelomenos um Orcamento de viagem."); if (orcamentosOperacionais != null && orcamentosOperacionais.Count > 0) throw new Exception("Não é possivel Retirar o Centro de Custo:" + nome + " pois ele está atrelado a pelomenos um Orcamento de despesa operacional."); if (funcionarios != null && funcionarios.Count() > 0) throw new Exception("Não é possivel Retirar o Centro de Custo:" + nome + " pois ele está atrelado a pelomenos um funcionário com este Departamento."); } hospital.CentrosDeCusto.Remove(hospital.CentrosDeCusto.Where(c => c.Id == centroDeCustoId).FirstOrDefault()); } } } } Controller.SalvarDepartamento(hospital); Notificacao = "Hospital salvo com sucesso"; } catch (Exception ex) { Notificacao = ex.Message; } EnviarMensagem(); LimparCampos(); PopularRepeaterDeCentrosDeCusto(); }
public void Executar() { var tiposConta = new TiposConta(); var tiposDeconta = new TiposConta(); var tipoContaOutras = tiposDeconta.Obter<TipoConta>(1); string _conectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;"; _conectionstring += String.Format("Data Source={0};", "D:\\CargaOrcamento2014\\DepartamentoCentroDeCustoContaHospitalarNew.xls"); _conectionstring += "Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'"; var cn = new OleDbConnection(_conectionstring); var cmd = new OleDbCommand("Select * from [c$]", cn); cn.Open(); var reader = cmd.ExecuteReader(); var documento = new List<RegistroExcel>(); var listaContas = new List<Conta>(); var listaCentrosDeCusto = new List<CentroDeCusto>(); var repositorioDeHospitais = new Hospitais(); var repositorioDeCusto = new CentrosDeCusto(); var repositorioContas = new Contas(); int i = 0; while (reader.Read()) { if (i == 0) { i++; continue; } if (reader[0] == null || reader[0] == DBNull.Value || string.IsNullOrEmpty(reader[0].ToString())) break; var registroExcel = new RegistroExcel() { NomeHospital = (string)reader[5], CodigoCentroDeCusto = Convert.ToString(reader[0]), DescricaoCentroDeCusto = (string)reader[1] }; if (reader[5] != DBNull.Value) { registroExcel.DescricaoConta = (string)reader[3]; registroExcel.CodigoConta = Convert.ToString(reader[2]); registroExcel.GrupoResumoNome = (string)reader[4]; } registroExcel.Mes = (string)reader[7]; registroExcel.Valor = Convert.ToInt64(reader[6]); documento.Add(registroExcel); } cn.Close(); cn.Dispose(); cmd.Dispose(); var gruposDeConta = documento.Select(x => x.GrupoResumoNome).Distinct(); var codigosDeConta = documento.Select(x => x.CodigoConta).Distinct(); foreach (var codigoDeConta in codigosDeConta) { } var codigosDecentrosDeCusto = documento.Select(x => x.CodigoCentroDeCusto).Distinct(); foreach (var codigoDeCentro in codigosDecentrosDeCusto) { var descricaoDeCentroDeCusto = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.DescricaoCentroDeCusto).Distinct().First(); } var hospitais = documento.Select(x => x.NomeHospital).Distinct(); var listaHospitais = new List<Departamento>(); var orcamentoNao = new List<Orcamento.Domain.Orcamento>(); foreach (var nomeHospital in hospitais) { var hospital = repositorioDeHospitais.ObterPor(nomeHospital); if (hospital == null) throw new Exception(); listaCentrosDeCusto = new List<CentroDeCusto>(); listaContas = new List<Conta>(); if (!listaHospitais.Any(l => l.Nome == nomeHospital)) { listaHospitais.Add(hospital); foreach (var documentoHospital in documento.Where(d => d.NomeHospital == nomeHospital)) { var centroDeCusto = repositorioDeCusto.ObterPor(documentoHospital.CodigoCentroDeCusto); if (centroDeCusto == null) throw new Exception(); if (!listaCentrosDeCusto.Any(l => l.CodigoDoCentroDeCusto == documentoHospital.CodigoCentroDeCusto)) listaCentrosDeCusto.Add(centroDeCusto); string descricaoDaConta = documento.Where(x => x.CodigoConta == documentoHospital.CodigoConta).Select(y => y.DescricaoConta).Distinct().First(); var conta = repositorioContas.ObterContaPor(documentoHospital.CodigoConta); if (conta == null) throw new Exception(); if (!listaContas.Any(l => l.CodigoDaConta == documentoHospital.CodigoConta)) listaContas.Add(conta); } foreach (var centroDeCusto in listaCentrosDeCusto) { Orcamentos orcamentos = new Orcamentos(); var orcamento = orcamentos.ObterOrcamentoFinalOrcamentoOperacional(centroDeCusto, hospital); if (orcamento == null) { var orcamentosGerenciamento = orcamentos.TodosOrcamentosOperacionaisPor(centroDeCusto, hospital); bool podeCriarMaisUmaVersaoDeOrcamento = PodeCriarMaisUmaVersaoDeOrcamento(hospital, centroDeCusto.Id, orcamentosGerenciamento); if (podeCriarMaisUmaVersaoDeOrcamento) orcamento = this.ServicoOrcamento.CriarOrcamentoOperacional(orcamentosGerenciamento, hospital, centroDeCusto, 2014); else throw new Exception(); foreach (var despesa in orcamento.DespesasOperacionais) { var valor = documento.FirstOrDefault( d => d.CodigoCentroDeCusto == centroDeCusto.CodigoDoCentroDeCusto && d.CodigoConta == despesa.Conta.CodigoDaConta && d.NomeHospital == nomeHospital && d.Mes == ObterMes(despesa.Mes)); if (valor != null) despesa.Valor = valor.Valor; } orcamento.AtribuirVersaoFinal(); orcamentos.Salvar(orcamento); } } } } //ServicoAtualizarDespesasOperacionais servico = new ServicoAtualizarDespesasOperacionais(); //var centrosAbuscar = listaCentrosDeCusto.Distinct(); //foreach (var centro in centrosAbuscar) //{ // servico.AtualizarDespesas(centro); //} }