/// <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());
        }
 /// <summary>
 /// Tranforma modelo de Lote de Mão de Obra em DTO.
 /// </summary>
 /// <param name="lote">Modelo Lote de Mão de Obra.</param>
 /// <returns>DTO Lote de Mão de Obra.</returns>
 public static LoteMaoDeObraDto ToDto(this LoteMaoDeObra lote)
 {
     return(new LoteMaoDeObraDto()
     {
         LoteId = lote.LoteId,
         DataAtualizacao = lote.DataAtualizacao,
         CentroCustoImportacao = lote.CentroCustoImportacao,
         RubricaMesId = lote.RubricaMesId
     });
 }
Пример #3
0
        /// <summary>
        /// Consulta no Banco de Dados, 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">Id do Centro de Custo.</param>
        /// <param name="rubricaMesId">Id do Mês da Rúbrica.</param>
        /// <param name="lote">Referência de Lote de Mão de Obra.</param>
        /// <param name="maosDeObra">Referência de Mão de Obra.</param>
        public void ConsultarMaosDeObra(int centroCustoId, int rubricaMesId, out LoteMaoDeObra lote, out List <MaoDeObra> maosDeObra)
        {
            maosDeObra = null;

            using (var _db = new WexDb())
            {
                lote = (from l in _db.Lotes.Include("MaosDeObra").Include("RubricaMes")
                        where l.CentroCustoImportacao == centroCustoId && l.RubricaMesId == rubricaMesId
                        orderby l.LoteId descending
                        select l).FirstOrDefault();
            }

            if (lote != null)
            {
                maosDeObra      = lote.MaosDeObra.OrderBy(m => m.Matricula).ToList();
                lote.MaosDeObra = null;
            }
        }
Пример #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="lote">Modelo de Lote de Mão de Obra.</param>
        /// <returns>Id de Lote salvo.</returns>
        public int SalvarLote(LoteMaoDeObra lote)
        {
            using (var _db = new WexDb())
            {
                if (lote.LoteId == 0)
                {
                    _db.Lotes.Add(lote);
                }
                else
                {
                    _db.Entry(lote).State = EntityState.Modified;
                }

                _db.SaveChanges();
            }

            return(lote.LoteId);
        }
        /// <summary>
        ///     Compara as versões da importação do Wex com a do Totvs para uma determinada data
        /// </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>Verdadeiro quando houver uma nova atualização de importação</returns>
        /// <exception cref="WexProject.BLL.Exceptions.Geral.EntidadeNaoEncontradaException">
        ///     Quando o centro de custo ou lote não
        ///     for encontrado
        /// </exception>
        public Boolean VerificarNovaAtualizacao(int centroCustoId, int ano, int mes)
        {
            CentroCusto centroCusto = CentroCustoDao.Instance.ConsultarCentroCusto(centroCustoId);

            if (centroCusto == null)
            {
                throw new EntidadeNaoEncontradaException("Centro de custo não encontrado.");
            }

            LoteMaoDeObra lote = MaosDeObraDao.ConsultarLote(centroCustoId, ano, mes);

            if (lote == null)
            {
                throw new EntidadeNaoEncontradaException(String.Format("Nenhum lote encontrado no mês de {0} de {1}.",
                                                                       Enum.GetName(typeof(CsMesDomain), mes), ano));
            }

            int codigoImportacaoAtual = MaosDeObraExterno.ConsultarCodigoImportacao(centroCusto.Codigo, ano, mes);

            return(lote.CodigoImportacao != codigoImportacaoAtual);
        }