コード例 #1
0
 public void RemoverItem(RequisicaoMaterialItem item)
 {
     if (item != (RequisicaoMaterialItem)null)
     {
         QueryableUnitOfWork.Attach(item);
         QueryableUnitOfWork.CreateSet <RequisicaoMaterialItem>().Remove(item);
     }
 }
コード例 #2
0
        private void RemoverInsumoRequisitado(RequisicaoMaterialItem item)
        {
            for (int i = item.ListaOrcamentoInsumoRequisitado.Count - 1; i >= 0; i--)
            {
                var insumoRequisitado = item.ListaOrcamentoInsumoRequisitado.ToList()[i];
                requisicaoMaterialRepository.RemoverInsumoRequisitado(insumoRequisitado);
            }

            item.ListaOrcamentoInsumoRequisitado.Clear();
        }
コード例 #3
0
        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);
        }