/// <summary> /// Lista Mãos de Obra e Lote mais atualizados de um determinado Mês e Ano de um Projeto. /// Retorna os resultados através de Referências. /// </summary> /// <param name="centroCustoId">Identificação do centro de custo</param> /// <param name="ano">Ano referente aos custos</param> /// <param name="mes">Mês referente aos custos</param> /// <param name="loteDto">Referência para DTO de Lote de Mão de Obra que será preenchido.</param> /// <param name="maosDeObraDto">Referência para DTO de Mão de Obra que será preenchido.</param> /// <param name="somaValorTotal">Somatório da propriedade ValorTotal das mãos-de-obra</param> public void ListarMaosDeObra(int centroCustoId, int aditivoId, int ano, int mes, out LoteMaoDeObraDto loteDto, out List <MaoDeObraDto> maosDeObraDto, out Decimal somaValorTotal, out int quantidadeColaboradores) { LoteMaoDeObra lote; List <MaoDeObra> maosDeObra; somaValorTotal = 0; RubricaMes rubricaMes = RubricaMesBo.Instance.ResgatarRubricaMes(centroCustoId, TipoRubricaId, aditivoId, ano, mes); MaosDeObraDao.ConsultarMaosDeObra(centroCustoId, rubricaMes.RubricaMesId, out lote, out maosDeObra); if (lote != null) { maosDeObraDto = maosDeObra.Select(mo => mo.ToDto()).ToList(); loteDto = lote.ToDto(); somaValorTotal = SomarValorTotalMaosDeObra(maosDeObra); quantidadeColaboradores = CalcularQuantidadeColaboradores(maosDeObra); } else { CentroCusto centroCusto = CentroCustoBo.Instance.ConsultarCentroCusto(centroCustoId); throw new EntidadeNaoEncontradaException( String.Format("Nenhum lote encontrado no mês de {0} de {1} no Centro de Custo '{2} - {3}'.", Enum.GetName(typeof(CsMesDomain), mes), ano, centroCusto.Codigo, centroCusto.Nome)); } }
/// <summary> /// Método para selecionar uma rubricaMes /// </summary> /// <param name="projetoId">Id do projeto</param> /// <param name="tipoRubricaId">Id do tipoRubrica</param> /// <param name="ano">Ano</param> /// <param name="mes">Mes</param> /// <returns>Rubrica</returns> public RubricaMes SelecionarRubricaMes(Guid projetoId, int tipoRubricaId, int ano, int mes) { List <RubricaMes> rubricaMeses = RubricaMesDao.Instance.ConsultarRubricaMeses(projetoId, tipoRubricaId, ano, mes); RubricaMes rubricaMes = rubricaMeses.FirstOrDefault(); if (rubricaMes != null) { return(rubricaMes); } Rubrica rubrica = RubricaBo.Instance.PesquisarRubrica(projetoId, tipoRubricaId, ano, mes); rubricaMes = new RubricaMes { RubricaId = rubrica.RubricaId, NbAno = ano, CsMes = (CsMesDomain)mes }; SalvarRubricaMes(rubricaMes); return(rubricaMes); }
/// <summary> /// Importa Mãos de Obra de um determinado Centro de Custo através da interface com aplicação externa. /// Gera um novo Lote para Mês e Ano determinados. /// </summary> /// <param name="centroCustoId">Identificação do centro de custo</param> /// <param name="ano">Ano referente aos custos</param> /// <param name="mes">Mês referente aos custos</param> /// <returns>DTO de Lote de Mão de Obra gerado.</returns> public LoteMaoDeObraDto Importar(int centroCustoId, int aditivoId, int ano, int mes) { CentroCusto centroCusto = CentroCustoDao.Instance.ConsultarCentroCusto(centroCustoId); RubricaMes rubricaMes = RubricaMesBo.Instance.ResgatarRubricaMes(centroCustoId, TipoRubricaId, aditivoId, ano, mes); int codigoImportacao = MaosDeObraExterno.ConsultarCodigoImportacao(centroCusto.Codigo, ano, mes); var novoLote = new LoteMaoDeObra { DataAtualizacao = DateTime.Now, CentroCustoImportacao = centroCustoId, RubricaMesId = rubricaMes.RubricaMesId, CodigoImportacao = codigoImportacao }; MaosDeObraDao.SalvarLote(novoLote); List <MaoDeObraDto> maosDeObraDto = MaosDeObraExterno.ConsultarMaosDeObra(centroCusto.Codigo, ano, mes); foreach (MaoDeObraDto maoDeObraDto in maosDeObraDto) { maoDeObraDto.PercentualAlocacao = 100; maoDeObraDto.LoteId = novoLote.LoteId; MaosDeObraDao.SalvarMaoDeObra(maoDeObraDto.FromDto()); } return(novoLote.ToDto()); }
public void DadoQueOAditivoDoProjetoPossuaAsSeguintesDespesasReaisInformadas(string aditivo, string projeto, Table table) { foreach (var row in table.Rows) { Rubrica r = ScenarioContext.Current.Get <Rubrica>(aditivo + row["rubrica"]); var numeroColunas = table.Header.Count; List <CsMesDomain> meses = new List <CsMesDomain>(); int i = 1; while (i < numeroColunas) { meses.Add((CsMesDomain)Enum.Parse(typeof(CsMesDomain), table.Header.ToList()[i])); i++; } int j = 0; while (j < meses.Count) { rubricaMes = new RubricaMes { RubricaId = r.RubricaId, CsMes = meses[j], NbAno = 2014, NbGasto = (Decimal?)(row[meses[j].ToString()].Equals("") ? 0 : Convert.ToDecimal(row[meses[j].ToString()])), PossuiGastosRelacionados = false }; RubricaMesDao.Instance.SalvarRubricaMes(rubricaMes); j++; } } }
/// <summary> /// Retorna uma lista dos meses de uma rubrica em um ano /// </summary> /// <param name="rubrica">Rubrica a ter os meses recuperados</param> /// <param name="ano">Ano a ser recuperado</param> /// <returns>Lista de descrições dos meses de uma rubrica</returns> public List <RubricaMesDto> ListarRubricaMeses(Rubrica rubrica, int ano) { var rubricaMesDtos = new List <RubricaMesDto>(); List <RubricaMes> rubricaMeses = RubricaMesDao.Instance.ConsultarRubricaMeses(rubrica); for (int mes = 1; mes <= 12; mes++) { RubricaMesDto rubricaMesDto; //RubricaMes rubricaMes = RubricaMesDao.Instance.ConsultarRubricaMes(rubrica, mes, ano); RubricaMes rubricaMes = rubricaMeses.FirstOrDefault(rm => rm.NbAno == ano && (int)rm.CsMes == mes); if (rubricaMes != null) { rubricaMesDto = rubricaMes.ToDto(); } else { rubricaMesDto = new RubricaMesDto { RubricaId = rubrica.RubricaId, Mes = (CsMesDomain)mes, Ano = ano }; } rubricaMesDtos.Add(rubricaMesDto); } return(rubricaMesDtos); }
/// <summary> /// </summary> /// <param name="centroCustoId"></param> /// <param name="tipoRubricaId"></param> /// <param name="aditivoId"></param> /// <param name="ano"></param> /// <param name="mes"></param> /// <returns></returns> public RubricaMes ResgatarRubricaMes(int centroCustoId, int tipoRubricaId, int aditivoId, int ano, int mes) { List <RubricaMes> rubricaMeses = RubricaMesDao.Instance.ConsultarRubricaMeses(centroCustoId, tipoRubricaId, aditivoId, ano, mes); RubricaMes rubricaMes = rubricaMeses.FirstOrDefault(r => r.Rubrica.AditivoId == aditivoId); if (rubricaMes != null) { return(rubricaMes); } Rubrica rubrica = RubricaBo.Instance.PesquisarRubrica(centroCustoId, tipoRubricaId, aditivoId); rubricaMes = new RubricaMes { RubricaId = rubrica.RubricaId, NbAno = ano, CsMes = (CsMesDomain)mes }; SalvarRubricaMes(rubricaMes); return(rubricaMes); }
/// <summary> /// Remove a entidade do banco de dados /// </summary> /// <param name="rubricaMes"></param> public void RemoverRubricaMes(RubricaMes rubricaMes) { using (var contexto = ContextFactoryManager.CriarWexDb()) { contexto.RubricaMeses.Remove(rubricaMes); contexto.SaveChanges(); } }
public static RubricaMes CriarRubricaMes(int rubricaId, CsMesDomain csMesDomain, int nbAno, bool PossuiGastosRelacionados, decimal?nbPlanejado, decimal?nbGasto) { var rubricaMes = new RubricaMes { RubricaId = rubricaId, CsMes = csMesDomain, NbAno = nbAno, PossuiGastosRelacionados = PossuiGastosRelacionados, NbPlanejado = nbPlanejado, NbGasto = nbGasto }; RubricaMesDao.Instance.SalvarRubricaMes(rubricaMes); return(rubricaMes); }
/// <summary> /// </summary> /// <param name="despesaRealDto"></param> public void SalvarDespesaReal(DespesaRealDto despesaRealDto) { ProjetoDto projeto = ProjetoBo.Instancia.ConsultarProjeto(despesaRealDto.ProjetoOid); RubricaMes rubricaMes = Instance.SelecionarRubricaMes(projeto.Oid, despesaRealDto.TipoRubricaId, despesaRealDto.Ano, (int)despesaRealDto.Mes); rubricaMes.NbGasto = despesaRealDto.DespesaReal; SalvarRubricaMes(rubricaMes); }
public static RubricaMesDto ToDto(this RubricaMes rubricaMes) { return(new RubricaMesDto { RubricaMesId = rubricaMes.RubricaMesId, RubricaId = rubricaMes.RubricaId, Mes = rubricaMes.CsMes, Ano = rubricaMes.NbAno, PossuiGastosRelacionados = rubricaMes.PossuiGastosRelacionados, Planejado = rubricaMes.NbPlanejado, Replanejado = rubricaMes.NbReplanejado, Gasto = rubricaMes.NbGasto }); }
public void DadoQueOAditivoDoProjetoPossuiOSeguintePlanejamentoParaUsoDoOrcamentoAprovado(string aditivo, string projeto, Table table) { foreach (var item in table.CreateSet <RubricaBindHelper>()) { TipoRubrica tp = ScenarioContext.Current.Get <TipoRubrica>(item.Rubrica); Aditivo ad = ScenarioContext.Current.Get <Aditivo>(aditivo); rubrica = new Rubrica { TipoRubricaId = tp.TipoRubricaId, AditivoId = ad.AditivoId, NbTotalPlanejado = item.Total, TipoRubrica = tp }; ad.Rubricas.Add(rubrica); ScenarioContext.Current.Add(aditivo + item.Rubrica, rubrica); RubricaDao.Instance.SalvarRubrica(rubrica); } foreach (var row in table.Rows) { Rubrica r = ScenarioContext.Current.Get <Rubrica>(aditivo + row["rubrica"]); var numeroColunas = table.Header.Count; List <CsMesDomain> meses = new List <CsMesDomain>(); int i = 2; while (i < numeroColunas) { meses.Add((CsMesDomain)Enum.Parse(typeof(CsMesDomain), table.Header.ToList()[i])); i++; } int j = 0; while (j < meses.Count) { rubricaMes = new RubricaMes { RubricaId = r.RubricaId, CsMes = meses[j], NbAno = 2014, NbPlanejado = (Decimal?)(row[meses[j].ToString()].Equals("") ? 0 : Convert.ToDecimal(row[meses[j].ToString()])), PossuiGastosRelacionados = false }; RubricaMesDao.Instance.SalvarRubricaMes(rubricaMes); j++; } } }
public void DadoQueOAditivoDoProjetoPossuiAsSeguintesConfiguracoesDasRubricas(string aditivo, string projeto, Table table) { foreach (TableRow row in table.Rows) { Rubrica r = ScenarioContext.Current.Get <Rubrica>(aditivo + row["nome"]); _rubricaMes = new RubricaMes { RubricaId = r.RubricaId, CsMes = (CsMesDomain)Enum.Parse(typeof(CsMesDomain), row["Mes"]), NbAno = Convert.ToInt32(row["Ano"]), PossuiGastosRelacionados = false }; RubricaMesDao.Instance.SalvarRubricaMes(_rubricaMes); } }
/// <summary> /// Adiciona ou atualiza o detalhes de um mês de uma rubrica no banco /// </summary> /// <param name="rubricaMes">Objeto RubricaMes a ser adicionado ou atualizado</param> /// <returns>Id dos detalhes do mês da rubrica no banco</returns> public int SalvarRubricaMes(RubricaMes rubricaMes) { using (WexDb contexto = ContextFactoryManager.CriarWexDb()) { if (rubricaMes.RubricaMesId == 0) { contexto.RubricaMeses.Add(rubricaMes); } else { contexto.Entry(rubricaMes).State = EntityState.Modified; } contexto.SaveChanges(); } return(rubricaMes.RubricaMesId); }
public void EntaoDevoEncontrarAsSeguintesDespesasReaisNoAnoDeParaOAditivoDoProjeto(int ano, string aditivo, string projeto, Table table) { Projeto _projeto = ScenarioContext.Current.Get <Projeto>("Projeto_" + projeto); foreach (var row in table.Rows) { Rubrica rubrica = ScenarioContext.Current.Get <Rubrica>(aditivo + row["rubrica"]); foreach (var mes in table.Header.Skip(1)) { var _mes = (int)((CsMesDomain)Enum.Parse(typeof(CsMesDomain), mes)); RubricaMes rubricaMes = RubricaMesDao.Instance.ConsultarRubricaMes(rubrica, _mes, ano); Assert.AreEqual(row[mes], rubricaMes.NbGasto); } } }
/// <summary> /// </summary> /// <param name="rubricaMes"></param> /// <returns></returns> private decimal SelecionarValorFluxoCaixa(RubricaMes rubricaMes) { if (rubricaMes.NbGasto.HasValue) { return(rubricaMes.NbGasto.GetValueOrDefault()); } if (rubricaMes.NbReplanejado.HasValue) { return(rubricaMes.NbReplanejado.GetValueOrDefault()); } if (rubricaMes.NbPlanejado.HasValue) { return(rubricaMes.NbPlanejado.GetValueOrDefault()); } return(0); }
/// <summary> /// Realiza o somatório dos custos de mãos-de-obra e salva para o mês/ano da rubrica /// </summary> /// <param name="centroCustoId">Identificação do centro de custo</param> /// <param name="aditivoId">Identificação do aditivo</param> /// <param name="ano">Ano referente aos custos</param> /// <param name="mes">Mês referente aos custos</param> public void AplicarSomatorioCustos(int centroCustoId, int aditivoId, int ano, int mes) { LoteMaoDeObra lote; List <MaoDeObra> maosDeObra; RubricaMes rubricaMes = RubricaMesBo.Instance.ResgatarRubricaMes(centroCustoId, TipoRubricaId, aditivoId, ano, mes); MaosDeObraDao.ConsultarMaosDeObra(centroCustoId, rubricaMes.RubricaMesId, out lote, out maosDeObra); if (lote == null) { throw new EntidadeNaoEncontradaException(String.Format("Nenhum lote encontrado no mês de {0} de {1}.", Enum.GetName(typeof(CsMesDomain), mes), ano)); } rubricaMes.NbReplanejado = null; rubricaMes.NbGasto = SomarValorTotalMaosDeObra(maosDeObra); RubricaMesBo.Instance.SalvarRubricaMes(rubricaMes); }
/// <summary> /// </summary> /// <param name="rubricaMes"></param> /// <returns></returns> public int SalvarRubricaMes(RubricaMes rubricaMes) { return(RubricaMesDao.Instance.SalvarRubricaMes(rubricaMes)); }