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); } } } }
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); }
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; } }
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); } } }
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())); } }
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()); }
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); } }
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 void ProcessarItens(RequisicaoMaterialDTO dto, RequisicaoMaterial requisicaoMaterial) { RemoverItens(dto, requisicaoMaterial); AlterarItens(dto, requisicaoMaterial); AdicionarItens(dto, requisicaoMaterial); }
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); }