Exemplo n.º 1
0
        public void NovaRequisicao(RequisicaoDeCompraVm requisicaoDeCompraVm)
        {
            try
            {
                _unitOfWork.BeginTransaction();
                Usuario         criador = _usuarios.BuscaPorLogin(requisicaoDeCompraVm.Criador);
                Fornecedor      fornecedorPretendido = _fornecedores.BuscaPeloCodigo(requisicaoDeCompraVm.FornecedorPretendido);
                Produto         material             = _produtos.BuscaPeloCodigo(requisicaoDeCompraVm.Material);
                UnidadeDeMedida unidadeDeMedida      = _unidadesDeMedida.BuscaPeloCodigoInterno(requisicaoDeCompraVm.UnidadeMedida).Single();
                var             requisicaoDeCompra   = new RequisicaoDeCompra(criador, requisicaoDeCompraVm.Requisitante, fornecedorPretendido,
                                                                              Convert.ToDateTime(requisicaoDeCompraVm.DataDeRemessa),
                                                                              Convert.ToDateTime(requisicaoDeCompraVm.DataDeLiberacao),
                                                                              Convert.ToDateTime(requisicaoDeCompraVm.DataDeSolicitacao),
                                                                              requisicaoDeCompraVm.Centro,
                                                                              unidadeDeMedida,
                                                                              requisicaoDeCompraVm.Quantidade, material,
                                                                              requisicaoDeCompraVm.Descricao,
                                                                              requisicaoDeCompraVm.NumeroItem,
                                                                              requisicaoDeCompraVm.NumeroRequisicao,
                                                                              requisicaoDeCompraVm.CodigoGrupoDeCompra,
                                                                              requisicaoDeCompraVm.Mrp.ToUpper().Equals("B"));

                //var processoDeCotacaoDeMaterial = requisicaoDeCompra.GerarProcessoDeCotacaoDeMaterial();

                _requisicoesDeCompra.Save(requisicaoDeCompra);
                //_processosDeCotacao.Save(processoDeCotacaoDeMaterial);

                _unitOfWork.Commit();
            }
            catch (Exception)
            {
                _unitOfWork.RollBack();
                throw;
            }
        }
Exemplo n.º 2
0
        public void AtualizarItens(int idProcessoCotacao, IList <int> idsDasRequisicoesDeCompra)
        {
            try
            {
                _unitOfWork.BeginTransaction();
                var processoDeCotacao = (ProcessoDeCotacaoDeMaterial)_processosDeCotacao.BuscaPorId(idProcessoCotacao).Single();

                //busca todos os itens que devem ser removidos: são os itens que estão no processo de cotação mas não estão na lista de ids recebidas por parâmetro.
                IList <ProcessoDeCotacaoItem> itensParaRemover = processoDeCotacao.Itens.Where(x => idsDasRequisicoesDeCompra.All(id => id != ((ProcessoDeCotacaoDeMaterialItem)x).RequisicaoDeCompra.Id)).ToList();
                foreach (var processoDeCotacaoItem in itensParaRemover)
                {
                    var itemMaterial       = (ProcessoDeCotacaoDeMaterialItem)processoDeCotacaoItem;
                    var requisicaoDeCompra = itemMaterial.RequisicaoDeCompra;
                    processoDeCotacao.RemoverItem(processoDeCotacaoItem);
                    //o método processoDeCotacao.RemoverItem(processoDeCotacaoItem) remove o vinculo entre a requisição de compra e o item.
                    //após fazer isso tem que salvar a requisição de compra
                    _requisicoesDeCompra.Save(requisicaoDeCompra);
                }

                //busca todos os itens que devem ser adicionados: são os itens que estão na lista de ids recebidas por parâmetro e não estão no processo de cotação
                int[] itensParaAdicionar = idsDasRequisicoesDeCompra.Where(r => processoDeCotacao.Itens.All(item => ((ProcessoDeCotacaoDeMaterialItem)item).RequisicaoDeCompra.Id != r)).ToArray();

                //carrega lista de requisições que devem ser adicionadas
                IList <RequisicaoDeCompra> requisicoesDeComprasSelecionadas = _requisicoesDeCompra.FiltraPorIds(itensParaAdicionar);
                foreach (var requisicaoDeCompra in requisicoesDeComprasSelecionadas)
                {
                    processoDeCotacao.AdicionarItem(requisicaoDeCompra);
                }

                _processosDeCotacao.Save(processoDeCotacao);

                foreach (var requisicaoDeCompra in requisicoesDeComprasSelecionadas)
                {
                    //o método processoDeCotacao.AdicionarItem(requisicaoDeCompra) cria um vinculo com o item na Requisição de Compra
                    //após fazer isso tem que salvar a requisição. Isto tem que ser feito após salvar o processo de cotação, pois é o
                    //processo que salvar o item (gerando sua chave) que fica relacionada com a requisição de compra.
                    _requisicoesDeCompra.Save(requisicaoDeCompra);
                }

                _unitOfWork.Commit();
            }
            catch (Exception)
            {
                _unitOfWork.RollBack();
                throw;
            }
        }
        public void Bloquear(int idRequisicaoDeCompra)
        {
            try
            {
                _unitOfWork.BeginTransaction();
                int quantidadeDeProcessosVinculados = _processosDeCotacaoDeMaterial.GeradosPelaRequisicaoDeCompra(idRequisicaoDeCompra).Count();
                if (quantidadeDeProcessosVinculados > 0)
                {
                    throw new RequisicaoDeCompraComProcessoDeCotacaoBloqueioException();
                }

                RequisicaoDeCompra requisicaoDeCompra = _requisicoesDeCompra.BuscaPeloId(idRequisicaoDeCompra);
                requisicaoDeCompra.Bloquear();

                _requisicoesDeCompra.Save(requisicaoDeCompra);

                _unitOfWork.Commit();
            }
            catch (Exception)
            {
                _unitOfWork.RollBack();
                throw;
            }
        }