Exemple #1
0
        private void AlterarItens(RequisicaoMaterialDTO dto, RequisicaoMaterial requisicaoMaterial)
        {
            foreach (var item in requisicaoMaterial.ListaItens)
            {
                if (item.Situacao == SituacaoRequisicaoMaterialItem.Requisitado)
                {
                    var itemDTO = dto.ListaItens.Where(l => l.Id == item.Id).SingleOrDefault();

                    if (itemDTO.OrcamentoInsumoRequisitado == null)
                    {
                        item.Material      = null;
                        item.MaterialId    = itemDTO.Material.Id;
                        item.UnidadeMedida = itemDTO.Material.SiglaUnidadeMedida.Trim();
                        item.Classe        = null;
                        item.CodigoClasse  = itemDTO.Classe.Codigo;
                    }

                    item.Sequencial         = itemDTO.Sequencial;
                    item.Complemento        = itemDTO.Complemento.Trim();
                    item.Quantidade         = itemDTO.Quantidade;
                    item.QuantidadeAprovada = itemDTO.QuantidadeAprovada;
                    item.DataMaxima         = itemDTO.DataMaxima;
                    item.DataMinima         = itemDTO.DataMinima;
                    item.Situacao           = itemDTO.Situacao;
                    if (item.Situacao == SituacaoRequisicaoMaterialItem.Cancelado)
                    {
                        RemoverInsumoRequisitado(item);
                    }
                }
            }
        }
Exemple #2
0
        private DataTable RequisicaoToDataTable(RequisicaoMaterial requisicaoMaterial)
        {
            DataTable  dta                        = new DataTable();
            DataColumn codigo                     = new DataColumn("codigo");
            DataColumn dataRequisicao             = new DataColumn("dataRequisicao");
            DataColumn observacao                 = new DataColumn("observacao");
            DataColumn dataCadastro               = new DataColumn("dataCadastro");
            DataColumn usuarioCadastro            = new DataColumn("usuarioCadastro");
            DataColumn dataCancela                = new DataColumn("dataCancela");
            DataColumn usuarioCancela             = new DataColumn("usuarioCancela");
            DataColumn motivoCancela              = new DataColumn("motivoCancela");
            DataColumn dataAprovado               = new DataColumn("dataAprovado");
            DataColumn usuarioAprovado            = new DataColumn("usuarioAprovado");
            DataColumn centroCusto                = new DataColumn("centroCusto");
            DataColumn descricaoCentroCusto       = new DataColumn("descricaoCentroCusto");
            DataColumn codigoDescricaoCentroCusto = new DataColumn("codigoDescricaoCentroCusto");
            DataColumn situacaoCentroCusto        = new DataColumn("situacaoCentroCusto");
            DataColumn situacao                   = new DataColumn("situacao");
            DataColumn descricaoSituacao          = new DataColumn("descricaoSituacao");

            dta.Columns.Add(codigo);
            dta.Columns.Add(dataRequisicao);
            dta.Columns.Add(observacao);
            dta.Columns.Add(dataCadastro);
            dta.Columns.Add(usuarioCadastro);
            dta.Columns.Add(dataCancela);
            dta.Columns.Add(usuarioCancela);
            dta.Columns.Add(motivoCancela);
            dta.Columns.Add(dataAprovado);
            dta.Columns.Add(usuarioAprovado);
            dta.Columns.Add(centroCusto);
            dta.Columns.Add(descricaoCentroCusto);
            dta.Columns.Add(codigoDescricaoCentroCusto);
            dta.Columns.Add(situacaoCentroCusto);
            dta.Columns.Add(situacao);
            dta.Columns.Add(descricaoSituacao);

            DataRow row = dta.NewRow();

            row[codigo]                     = requisicaoMaterial.Id;
            row[dataRequisicao]             = requisicaoMaterial.Data.ToString("dd/MM/yyyy");
            row[observacao]                 = requisicaoMaterial.Observacao;
            row[dataCadastro]               = requisicaoMaterial.DataCadastro.ToString("dd/MM/yyyy");
            row[usuarioCadastro]            = requisicaoMaterial.LoginUsuarioCadastro;
            row[dataCancela]                = requisicaoMaterial.DataCancelamento.HasValue ? requisicaoMaterial.DataCancelamento.Value.ToString("dd/MM/yyyy") : string.Empty;
            row[usuarioCancela]             = requisicaoMaterial.LoginUsuarioCancelamento;
            row[motivoCancela]              = requisicaoMaterial.MotivoCancelamento;
            row[dataAprovado]               = requisicaoMaterial.DataAprovacao.HasValue ? requisicaoMaterial.DataAprovacao.Value.ToString("dd/MM/yyyy") : string.Empty;
            row[usuarioAprovado]            = requisicaoMaterial.LoginUsuarioAprovacao;
            row[centroCusto]                = requisicaoMaterial.CodigoCentroCusto;
            row[descricaoCentroCusto]       = requisicaoMaterial.CodigoCentroCusto + " - " + requisicaoMaterial.CentroCusto.Descricao;
            row[codigoDescricaoCentroCusto] = requisicaoMaterial.CodigoCentroCusto + " - " + requisicaoMaterial.CentroCusto.Descricao;
            row[situacaoCentroCusto]        = requisicaoMaterial.CentroCusto.Situacao;
            row[situacao]                   = requisicaoMaterial.Situacao;
            row[descricaoSituacao]          = requisicaoMaterial.Situacao.ObterDescricao();
            dta.Rows.Add(row);
            return(dta);
        }
Exemple #3
0
 private void AjustarSituacaoRequisicao(RequisicaoMaterial requisicao)
 {
     if ((requisicao.ListaItens.Any()) &&
         (requisicao.ListaItens.All(l => l.Situacao == SituacaoRequisicaoMaterialItem.Fechado ||
                                    l.Situacao == SituacaoRequisicaoMaterialItem.Cancelado)))
     {
         requisicao.Situacao = SituacaoRequisicaoMaterial.Fechada;
     }
 }
Exemple #4
0
 private void RemoverItens(RequisicaoMaterialDTO dto, RequisicaoMaterial requisicaoMaterial)
 {
     for (int i = requisicaoMaterial.ListaItens.Count - 1; i >= 0; i--)
     {
         var item = requisicaoMaterial.ListaItens.ToList()[i];
         if (!dto.ListaItens.Any(l => l.Id == item.Id))
         {
             requisicaoMaterial.ListaItens.Remove(item);
             requisicaoMaterialRepository.RemoverItem(item);
         }
     }
 }
Exemple #5
0
        private void GravarLogOperacao(RequisicaoMaterial requisicaoMaterial, string operacao)
        {
            logOperacaoAppService.Gravar("Atualização da requisição de material",
                                         "OrdemCompra.requisicaoMaterial_Atualiza",
                                         "OrdemCompra.requisicaoMaterial",
                                         operacao,
                                         RequisicaoToXML(requisicaoMaterial));

            if (requisicaoMaterial.ListaItens.Any())
            {
                logOperacaoAppService.Gravar("Atualização da requisição de material",
                                             "OrdemCompra.requisicaoMaterial_Atualiza",
                                             "OrdemCompra.requisicaoMaterialItem",
                                             operacao,
                                             RequisicaoItemToXML(requisicaoMaterial.ListaItens.ToList()));
            }
        }
Exemple #6
0
        private static string RequisicaoToXML(RequisicaoMaterial requisicaoMaterial)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("<requisicaoMaterial>");
            sb.Append("<OrdemCompra.requisicaoMaterial>");
            sb.Append("<codigo>" + requisicaoMaterial.Id.ToString() + "</codigo>");
            sb.Append("<centroCusto>" + requisicaoMaterial.CodigoCentroCusto + "</centroCusto>");
            sb.Append("<dataRequisicao>" + requisicaoMaterial.Data.ToString() + "</dataRequisicao>");
            sb.Append("<situacao>" + ((int)requisicaoMaterial.Situacao).ToString() + "</situacao>");
            sb.Append("<observacao>" + requisicaoMaterial.Observacao + "</observacao>");
            sb.Append("<dataCadastro>" + requisicaoMaterial.DataCadastro.ToString() + "</dataCadastro>");
            sb.Append("<usuarioCadastro>" + requisicaoMaterial.LoginUsuarioCadastro + "</usuarioCadastro>");
            sb.Append("<dataAprovado>" + requisicaoMaterial.DataAprovacao.ToString() + "</dataAprovado>");
            sb.Append("<usuarioAprovado>" + requisicaoMaterial.LoginUsuarioAprovacao + "</usuarioAprovado>");
            sb.Append("</OrdemCompra.requisicaoMaterial>");
            sb.Append("</requisicaoMaterial>");

            return(sb.ToString());
        }
Exemple #7
0
 private void AdicionarItens(RequisicaoMaterialDTO dto, RequisicaoMaterial requisicaoMaterial)
 {
     foreach (var item in dto.ListaItens.Where(l => !l.Id.HasValue))
     {
         var itemLista = item.To <RequisicaoMaterialItem>();
         itemLista.RequisicaoMaterial = requisicaoMaterial;
         if (PossuiInsumoRequisitado(item))
         {
             var orcamentoInsumoRequisitado = new OrcamentoInsumoRequisitado();
             orcamentoInsumoRequisitado.CodigoCentroCusto      = dto.CentroCusto.Codigo;
             orcamentoInsumoRequisitado.CodigoClasse           = item.Classe.Codigo;
             orcamentoInsumoRequisitado.ComposicaoId           = item.OrcamentoInsumoRequisitado.Composicao.Id;
             orcamentoInsumoRequisitado.MaterialId             = item.OrcamentoInsumoRequisitado.Material.Id;
             orcamentoInsumoRequisitado.Quantidade             = item.Quantidade;
             orcamentoInsumoRequisitado.RequisicaoMaterialItem = itemLista;
             itemLista.ListaOrcamentoInsumoRequisitado.Add(orcamentoInsumoRequisitado);
         }
         requisicaoMaterial.ListaItens.Add(itemLista);
     }
 }
Exemple #8
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);
        }
Exemple #9
0
 private void ProcessarItens(RequisicaoMaterialDTO dto, RequisicaoMaterial requisicaoMaterial)
 {
     RemoverItens(dto, requisicaoMaterial);
     AlterarItens(dto, requisicaoMaterial);
     AdicionarItens(dto, requisicaoMaterial);
 }
Exemple #10
0
        public bool Salvar(RequisicaoMaterialDTO dto)
        {
            if (!UsuarioLogado.IsInRole(Funcionalidade.RequisicaoMaterialGravar))
            {
                messageQueue.Add(Resource.Sigim.ErrorMessages.PrivilegiosInsuficientes, TypeMessage.Error);
                return(false);
            }

            if (dto == null)
            {
                throw new ArgumentNullException("dto");
            }

            bool novoItem = false;

            var requisicaoMaterial = requisicaoMaterialRepository.ObterPeloId(dto.Id, l => l.ListaItens.Select(o => o.ListaOrcamentoInsumoRequisitado));

            if (requisicaoMaterial == null)
            {
                requisicaoMaterial                      = new RequisicaoMaterial();
                requisicaoMaterial.Situacao             = SituacaoRequisicaoMaterial.Requisitada;
                requisicaoMaterial.DataCadastro         = DateTime.Now;
                requisicaoMaterial.LoginUsuarioCadastro = UsuarioLogado.Login;
                novoItem = true;
            }

            if (!PodeSerSalvaNaSituacaoAtual(requisicaoMaterial.Situacao))
            {
                var msg = string.Format(Resource.OrdemCompra.ErrorMessages.RequisicaoSituacaoInvalida, requisicaoMaterial.Situacao.ObterDescricao());
                messageQueue.Add(msg, TypeMessage.Error);
                return(false);
            }

            requisicaoMaterial.Data = dto.Data;
            requisicaoMaterial.CodigoCentroCusto = dto.CentroCusto.Codigo;
            requisicaoMaterial.Observacao        = dto.Observacao;
            ProcessarItens(dto, requisicaoMaterial);

            AjustarSituacaoRequisicao(requisicaoMaterial);

            if (Validator.IsValid(requisicaoMaterial, out validationErrors))
            {
                try
                {
                    if (novoItem)
                    {
                        requisicaoMaterialRepository.Inserir(requisicaoMaterial);
                    }
                    else
                    {
                        requisicaoMaterialRepository.Alterar(requisicaoMaterial);
                    }

                    requisicaoMaterialRepository.UnitOfWork.Commit();
                    GravarLogOperacao(requisicaoMaterial, novoItem ? "INSERT" : "UPDATE");

                    dto.Id = requisicaoMaterial.Id;
                    messageQueue.Add(Resource.Sigim.SuccessMessages.SalvoComSucesso, TypeMessage.Success);
                    return(true);
                }
                catch (Exception exception)
                {
                    QueueExeptionMessages(exception);
                }
            }
            else
            {
                messageQueue.AddRange(validationErrors, TypeMessage.Error);
            }

            return(false);
        }