/// <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));
            }
        }
Beispiel #2
0
        /// <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());
        }
Beispiel #4
0
 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++;
         }
     }
 }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #9
0
        /// <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
     });
 }
Beispiel #11
0
        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++;
                }
            }
        }
Beispiel #12
0
        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);
                }
            }
        }
Beispiel #15
0
        /// <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);
        }
Beispiel #17
0
 /// <summary>
 /// </summary>
 /// <param name="rubricaMes"></param>
 /// <returns></returns>
 public int SalvarRubricaMes(RubricaMes rubricaMes)
 {
     return(RubricaMesDao.Instance.SalvarRubricaMes(rubricaMes));
 }