public bool Aprovar(int?id, int[] itens) { ParametrosOrdemCompra parametros = parametrosOrdemCompraRepository.Obter() ?? new ParametrosOrdemCompra(); if (!UsuarioLogado.IsInRole(Funcionalidade.PreRequisicaoMaterialAprovar)) { messageQueue.Add(Resource.Sigim.ErrorMessages.PrivilegiosInsuficientes, TypeMessage.Error); return(false); } if (!itens.Any()) { messageQueue.Add(Resource.OrdemCompra.ErrorMessages.SelecioneUmItemParaAprocacao, TypeMessage.Error); return(false); } var preRequisicaoMaterial = preRequisicaoMaterialRepository.ObterPeloId(id, l => l.ListaItens); if (preRequisicaoMaterial == null) { messageQueue.Add(Application.Resource.Sigim.ErrorMessages.NenhumRegistroEncontrado, TypeMessage.Error); return(false); } if (!PodeAprovarNaSituacaoAtual(preRequisicaoMaterial.Situacao)) { var msg = string.Format(Resource.OrdemCompra.ErrorMessages.PreRequisicaoSituacaoInvalida, preRequisicaoMaterial.Situacao.ObterDescricao()); messageQueue.Add(msg, TypeMessage.Error); return(false); } if (ItemJaAprovadoFoiSelecionado(itens, preRequisicaoMaterial)) { return(false); } var listaCentroCusto = preRequisicaoMaterial.ListaItens.Where(l => itens.Contains(l.Id.Value)).Select(l => l.CodigoCentroCusto).Distinct().ToList(); foreach (var centroCusto in listaCentroCusto) { RequisicaoMaterial requisicaoMaterial = new RequisicaoMaterial(); int sequencial = 1; requisicaoMaterial = new RequisicaoMaterial(); SituacaoRequisicaoMaterial situacao = SituacaoRequisicaoMaterial.Aprovada; if (parametros != null) { if (parametros.EhGeraRequisicaoMaterialRequisitada.HasValue) { if (parametros.EhGeraRequisicaoMaterialRequisitada.Value) { situacao = SituacaoRequisicaoMaterial.Requisitada; } } } requisicaoMaterial.Situacao = situacao; requisicaoMaterial.DataAprovacao = DateTime.Now; requisicaoMaterial.LoginUsuarioAprovacao = UsuarioLogado.Login; requisicaoMaterial.CodigoCentroCusto = centroCusto; requisicaoMaterial.Data = preRequisicaoMaterial.Data; requisicaoMaterial.DataCadastro = preRequisicaoMaterial.DataCadastro; requisicaoMaterial.LoginUsuarioCadastro = preRequisicaoMaterial.LoginUsuarioCadastro; requisicaoMaterial.Observacao = preRequisicaoMaterial.Observacao; var listaItens = preRequisicaoMaterial.ListaItens.Where(l => itens.Contains(l.Id.Value) && l.CodigoCentroCusto == centroCusto).ToList(); foreach (var item in listaItens) { RequisicaoMaterialItem requisicaoMaterialItem = new RequisicaoMaterialItem(); requisicaoMaterialItem.Sequencial = sequencial; requisicaoMaterialItem.MaterialId = item.MaterialId; requisicaoMaterialItem.CodigoClasse = item.CodigoClasse; requisicaoMaterialItem.Complemento = item.Complemento; requisicaoMaterialItem.UnidadeMedida = item.UnidadeMedida; requisicaoMaterialItem.Quantidade = item.Quantidade; requisicaoMaterialItem.QuantidadeAprovada = item.QuantidadeAprovada; requisicaoMaterialItem.DataMaxima = item.DataMaxima; requisicaoMaterialItem.DataMinima = item.DataMinima; requisicaoMaterialItem.Situacao = SituacaoRequisicaoMaterialItem.Requisitado; requisicaoMaterialItem.PreRequisicaoMaterialItemId = item.Id; requisicaoMaterialItem.RequisicaoMaterial = requisicaoMaterial; requisicaoMaterial.ListaItens.Add(requisicaoMaterialItem); item.ListaRequisicaoMaterialItem.Add(requisicaoMaterialItem); item.Situacao = SituacaoPreRequisicaoMaterialItem.Aprovado; item.DataAprovacao = DateTime.Now; item.LoginUsuarioAprovacao = UsuarioLogado.Login; sequencial++; } requisicaoMaterialRepository.Inserir(requisicaoMaterial); } AjustarSituacaoPreRequisicao(preRequisicaoMaterial); preRequisicaoMaterialRepository.Alterar(preRequisicaoMaterial); preRequisicaoMaterialRepository.UnitOfWork.Commit(); messageQueue.Add(Resource.OrdemCompra.SuccessMessages.AprovacaoRealizadaComSucesso, TypeMessage.Success); return(true); }
private bool PodeAdicionarItemNaSituacaoAtual(SituacaoRequisicaoMaterial situacao) { return(situacao == SituacaoRequisicaoMaterial.Requisitada); }
private bool PodeCancelarNaSituacaoAtual(SituacaoRequisicaoMaterial situacao) { return(situacao == SituacaoRequisicaoMaterial.Requisitada); }
private bool PodeSerSalvaNaSituacaoAtual(SituacaoRequisicaoMaterial situacao) { return(situacao == SituacaoRequisicaoMaterial.Requisitada || situacao == SituacaoRequisicaoMaterial.Aprovada); }