/// <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 }); }
/// <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; } }
/// <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); }