public void DepoisDePersistirUmaRequisicaoDeCompraConsigoConsultar()
        {
            var requisicaoDeCompra = DefaultObjects.ObtemRequisicaoDeCompraPadrao();

            DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicaoDeCompra);

            UnitOfWorkNh.Session.Clear();

            RequisicaoDeCompra requisicaoConsultada = _requisicoesDeCompra.BuscaPeloId(requisicaoDeCompra.Id);

            Assert.IsNotNull(requisicaoConsultada);

            Assert.AreEqual(requisicaoDeCompra.Criador.Login, requisicaoConsultada.Criador.Login);
            Assert.AreEqual("requisitante", requisicaoConsultada.Requisitante);
            Assert.AreEqual(requisicaoDeCompra.FornecedorPretendido.Codigo, requisicaoConsultada.FornecedorPretendido.Codigo);
            Assert.AreEqual(requisicaoDeCompra.Material.Codigo, requisicaoConsultada.Material.Codigo);
            Assert.AreEqual(DateTime.Today.AddDays(-2), requisicaoConsultada.DataDeRemessa);
            Assert.AreEqual(DateTime.Today.AddDays(-1), requisicaoConsultada.DataDeLiberacao);
            Assert.AreEqual(DateTime.Today, requisicaoConsultada.DataDeSolicitacao);
            Assert.AreEqual("C001", requisicaoConsultada.Centro);
            Assert.AreEqual(requisicaoDeCompra.UnidadeMedida.CodigoInterno, requisicaoConsultada.UnidadeMedida.CodigoInterno);
            Assert.AreEqual(1000, requisicaoConsultada.Quantidade);
            Assert.AreEqual("Requisição de Compra enviada pelo SAP", requisicaoConsultada.Descricao);
            Assert.AreEqual(requisicaoDeCompra.Numero, requisicaoConsultada.Numero);
            Assert.AreEqual(requisicaoDeCompra.NumeroItem, requisicaoConsultada.NumeroItem);
            Assert.AreEqual(requisicaoDeCompra.CodigoGrupoDeCompra, requisicaoConsultada.CodigoGrupoDeCompra);
            Assert.AreEqual(requisicaoDeCompra.Mrp, requisicaoConsultada.Mrp);
        }
        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;
            }
        }