public void QuandoConsultoRequisicoesDisponiveisParaUmProcessoDeCotacaoListaAsRequisicoesQueJaEstaoAssociadasAoProcessoETambemAsQueNaoEstaoAssociadasANenhumOutroProcesso() { //Cria duas requisições de compra: 1 e 2 //Cria um processo de cotação 1 e associa a requisição 1 com este processo //Salva os registros //Depois consultar novamente as requisições para o processo 1: deve listar as requisiões 1 e 2 RemoveQueries.RemoverRequisicoesDeCompraCadastradas(); RequisicaoDeCompra requisicao1 = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); RequisicaoDeCompra requisicao2 = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); var processo1 = new ProcessoDeCotacaoDeMaterial(); processo1.AdicionarItem(requisicao1); DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicao1); DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicao2); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processo1); var consultaRequisicao = ObjectFactory.GetInstance <IConsultaRequisicaoDeCompra>(); var kendoGridVm = consultaRequisicao.Listar(DefaultObjects.ObtemPaginacaoDefault(), new RequisicaoDeCompraFiltroVm(processo1.Id)); Assert.AreEqual(2, kendoGridVm.QuantidadeDeRegistros); }
public void QuandoBloqueioRequisicaoDeCompraPassaParaEstadoBloqueado() { RequisicaoDeCompra requisicaoDeCompra = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); requisicaoDeCompra.Bloquear(); Assert.AreEqual(Enumeradores.StatusRequisicaoCompra.Bloqueado, requisicaoDeCompra.Status); }
public void QuandoConsultoUmaCotacaoDoFornecedorParaUmItemQueJaFoiPreenchidaRetornaOsDadosEsperados() { ProcessoDeCotacaoDeMaterial processo = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAbertoPadrao(); Fornecedor fornecedor = processo.FornecedoresParticipantes.First().Fornecedor; var cotacao = processo.InformarCotacao(fornecedor.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "Desc Incoterm"); var processoCotacaoItem = processo.Itens.First(); var cotacaoItem = cotacao.InformarCotacaoDeItem(processoCotacaoItem, 100, 120, 12, DateTime.Today.AddMonths(1), "observacoes"); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processo); var consulta = ObjectFactory.GetInstance <IConsultaCotacaoDoFornecedor>(); var itemDoProcesso = (ProcessoDeCotacaoDeMaterialItem)processo.Itens.First(); RequisicaoDeCompra requisicaoDeCompra = itemDoProcesso.RequisicaoDeCompra; CotacaoMaterialItemCadastroVm vm = consulta.ConsultarCotacaoDeItemDeMaterial(processo.Id, fornecedor.Codigo, requisicaoDeCompra.Numero, requisicaoDeCompra.NumeroItem); Assert.IsNotNull(vm); Assert.AreEqual(processo.Id, vm.IdProcessoCotacao); Assert.AreEqual(cotacao.Id, vm.IdCotacao); Assert.AreEqual(cotacaoItem.Id, vm.IdCotacaoItem); Assert.AreEqual(itemDoProcesso.Id, vm.IdProcessoCotacaoItem); Assert.AreEqual(itemDoProcesso.Produto.Descricao, vm.Material); Assert.AreEqual(itemDoProcesso.Quantidade, vm.Quantidade); Assert.AreEqual(itemDoProcesso.UnidadeDeMedida.Descricao, vm.UnidadeDeMedida); Assert.AreEqual(100, vm.ValorComImpostos); Assert.AreEqual(100, vm.Custo); Assert.AreEqual(100, vm.Preco); Assert.AreEqual(120, vm.Mva); }
public void QuandoCrioUmaRequisicaoAsPropriedadesFicamCorretas() { var usuarioCriador = new Usuario("Usuario Criador", "criador", ""); Fornecedor fornecedorPretendido = DefaultObjects.ObtemFornecedorPadrao(); UnidadeDeMedida unidadeDeMedida = DefaultObjects.ObtemUnidadeDeMedidaPadrao(); var material = new Produto("MAT0001", "MATERIAL DE COMPRA", "T01"); var dataDeRemessa = DateTime.Today.AddDays(-2); var dataDeLiberacao = DateTime.Today.AddDays(-1); var dataDeSolicitacao = DateTime.Today; var requisicaoDeCompra = new RequisicaoDeCompra(usuarioCriador, "requisitante", fornecedorPretendido, dataDeRemessa, dataDeLiberacao, dataDeSolicitacao, "CENTRO", unidadeDeMedida, 1000, material, "Requisição de Compra enviada pelo SAP", "ITEM001", "REQ0001", "GC1", false); Assert.AreEqual("criador", requisicaoDeCompra.Criador.Login); Assert.AreEqual("requisitante", requisicaoDeCompra.Requisitante); Assert.AreEqual(fornecedorPretendido.Codigo, requisicaoDeCompra.FornecedorPretendido.Codigo); Assert.AreEqual("MAT0001", requisicaoDeCompra.Material.Codigo); Assert.AreEqual(dataDeRemessa, requisicaoDeCompra.DataDeRemessa); Assert.AreEqual(dataDeLiberacao, requisicaoDeCompra.DataDeLiberacao); Assert.AreEqual(dataDeSolicitacao, requisicaoDeCompra.DataDeSolicitacao); Assert.AreEqual("CENTRO", requisicaoDeCompra.Centro); Assert.AreSame(unidadeDeMedida, requisicaoDeCompra.UnidadeMedida); Assert.AreEqual(1000, requisicaoDeCompra.Quantidade); Assert.AreEqual("Requisição de Compra enviada pelo SAP", requisicaoDeCompra.Descricao); Assert.AreEqual("REQ0001", requisicaoDeCompra.Numero); Assert.AreEqual("ITEM001", requisicaoDeCompra.NumeroItem); Assert.AreEqual("GC1", requisicaoDeCompra.CodigoGrupoDeCompra); Assert.IsFalse(requisicaoDeCompra.Mrp); Assert.AreEqual(Enumeradores.StatusRequisicaoCompra.Ativo, requisicaoDeCompra.Status); }
public static void PersistirRequisicaoDeCompra(RequisicaoDeCompra requisicaoDeCompra) { try { bool controlarTransacao = !Session.Transaction.IsActive; if (controlarTransacao) { Session.BeginTransaction(); } PersistirUsuario(requisicaoDeCompra.Criador); PersistirFornecedor(requisicaoDeCompra.FornecedorPretendido); PersistirProduto(requisicaoDeCompra.Material); PersistirUnidadeDeMedida(requisicaoDeCompra.UnidadeMedida); Session.Save(requisicaoDeCompra); if (controlarTransacao) { Session.Transaction.Commit(); } } catch (Exception) { RollbackSessionTransaction(); throw; } }
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; } }
public void QuandoInformoImpostosDeUmaCotacaoRetornaOsDadosDosImpostos() { ProcessoDeCotacaoDeMaterial processo = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAbertoPadrao(); Fornecedor fornecedor = processo.FornecedoresParticipantes.First().Fornecedor; var cotacao = processo.InformarCotacao(fornecedor.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "Desc Incoterm"); var itemDoProcesso = (ProcessoDeCotacaoDeMaterialItem)processo.Itens.First(); RequisicaoDeCompra requisicaoDeCompra = itemDoProcesso.RequisicaoDeCompra; var cotacaoItem = cotacao.InformarCotacaoDeItem(itemDoProcesso, 100, 120, 12, DateTime.Today.AddMonths(1), "observacoes"); cotacaoItem.InformarImposto(Enumeradores.TipoDeImposto.Icms, 1); cotacaoItem.InformarImposto(Enumeradores.TipoDeImposto.IcmsSubstituicao, 11); cotacaoItem.InformarImposto(Enumeradores.TipoDeImposto.Ipi, 21); cotacaoItem.InformarImposto(Enumeradores.TipoDeImposto.PisCofins, 3); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processo); var consulta = ObjectFactory.GetInstance <IConsultaCotacaoDoFornecedor>(); CotacaoImpostosVm vm = consulta.ConsultarCotacaoDeItemDeMaterial(processo.Id, fornecedor.Codigo, requisicaoDeCompra.Numero, requisicaoDeCompra.NumeroItem).Impostos; Assert.AreEqual(1, vm.IcmsAliquota); Assert.AreEqual(1, vm.IcmsValor); Assert.AreEqual(11, vm.IcmsStAliquota); Assert.AreEqual(11, vm.IcmsStValor); Assert.AreEqual(21, vm.IpiAliquota); Assert.AreEqual(21, vm.IpiValor); Assert.AreEqual(3, vm.PisCofinsValor); Assert.AreEqual(3, vm.PisCofinsAliquota); }
public void ConsigoPersistirEConsultarUmaRequisicaoDeCompraSemInformarRequisitanteEFornecedorPretendido() { var requisicaoDeCompra = DefaultObjects.ObtemRequisicaoDeCompraSemRequisitanteEFornecedor(); DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicaoDeCompra); UnitOfWorkNh.Session.Clear(); RequisicaoDeCompra requisicaoConsultada = _requisicoesDeCompra.BuscaPeloId(requisicaoDeCompra.Id); Assert.IsNotNull(requisicaoConsultada); Assert.AreEqual(requisicaoDeCompra.Criador.Login, requisicaoConsultada.Criador.Login); Assert.IsNull(requisicaoConsultada.Requisitante); Assert.IsNull(requisicaoConsultada.FornecedorPretendido); 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("REQ0001", requisicaoConsultada.Numero); Assert.AreEqual("00001", requisicaoConsultada.NumeroItem); }
public void NaoEPossivelAbrirOProcessoDeCotacaoSeADataLimiteDeRetornoNaoEstiverPreenchida() { RequisicaoDeCompra requisicaoDeCompra = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); ProcessoDeCotacaoDeMaterial processoDeCotacaoDeMaterial = requisicaoDeCompra.GerarProcessoDeCotacaoDeMaterial(); processoDeCotacaoDeMaterial.Abrir(DefaultObjects.ObtemUsuarioPadrao()); }
public void QuandoUmaRequisicaoDeCompraJaGerouUmProcessoDeCotacaoNaoApareceMaisDisponivelParaOutrosProcessos() { //Cria duas requisições de compra: 1 e 2 //Cria um processo de cotação e associa a requisição 1 com este processo //Cria um novo processo de cotação, salva e Lista as requisições para este processo. A requisição ' não deve aparecer. RemoveQueries.RemoverRequisicoesDeCompraCadastradas(); RequisicaoDeCompra requisicao1 = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); RequisicaoDeCompra requisicao2 = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); var processo1 = new ProcessoDeCotacaoDeMaterial(); processo1.AdicionarItem(requisicao1); var processo2 = new ProcessoDeCotacaoDeMaterial(); DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicao2); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processo1); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processo2); var consultaRequisicao = ObjectFactory.GetInstance <IConsultaRequisicaoDeCompra>(); var kendoGridVm = consultaRequisicao.Listar(DefaultObjects.ObtemPaginacaoDefault(), new RequisicaoDeCompraFiltroVm(processo2.Id)); Assert.AreEqual(1, kendoGridVm.QuantidadeDeRegistros); var requisicaoDeCompraVm = kendoGridVm.Registros.Cast <RequisicaoDeCompraVm>().Single(); Assert.AreEqual(requisicao2.Numero, requisicaoDeCompraVm.NumeroRequisicao); Assert.AreEqual(requisicao2.NumeroItem, requisicaoDeCompraVm.NumeroItem); }
public static ProcessoDeCotacaoDeMaterial ObtemProcessoDeCotacaoDeMaterialDeMateriaPrima() { RequisicaoDeCompra requisicaoDeCompra = ObtemRequisicaoDeMateriaPrima(); ProcessoDeCotacaoDeMaterial processoDeCotacao = requisicaoDeCompra.GerarProcessoDeCotacaoDeMaterial(); processoDeCotacao.Atualizar(DateTime.Today.AddDays(10), "requisitos"); return(processoDeCotacao); }
public void QuandoAdicionarItemEmUmProcessoDeCotacaoARequisicaoDeCompraFicaVinculadaAoItem() { RequisicaoDeCompra requisicaoDeCompra = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); ProcessoDeCotacaoDeMaterial processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialNaoIniciado(); Assert.IsFalse(requisicaoDeCompra.GerouProcessoDeCotacao); processoDeCotacao.AdicionarItem(requisicaoDeCompra); Assert.IsTrue(requisicaoDeCompra.GerouProcessoDeCotacao); }
public void QuandoRemovoItemDeUmProcessoDeCotacaoOVinculoEntreARequisicaoEoItemERemovido() { ProcessoDeCotacaoDeMaterial processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialNaoIniciado(); RequisicaoDeCompra requisicaoDeCompra = ((ProcessoDeCotacaoDeMaterialItem)processoDeCotacao.Itens.First()).RequisicaoDeCompra; Assert.IsTrue(requisicaoDeCompra.GerouProcessoDeCotacao); processoDeCotacao.RemoverItem(processoDeCotacao.Itens.First()); Assert.IsFalse(requisicaoDeCompra.GerouProcessoDeCotacao); }
public void NaoEPermitidoAdicionarSelecionarUmaRequisicaoDeCompraBloqueadaParaUmProcessoDeCotacao() { RequisicaoDeCompra requisicaoDeCompra = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); requisicaoDeCompra.Bloquear(); ProcessoDeCotacaoDeMaterial processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAtualizado(); processoDeCotacao.AdicionarItem(requisicaoDeCompra); }
public void QuandoGeroUmProcessoDeCotacaoAtravesDaRequisicaoDeCompraOProcessoFicaVinculadoComARequisicao() { RequisicaoDeCompra requisicaoDeCompra = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); var processoDeCotacao = requisicaoDeCompra.GerarProcessoDeCotacaoDeMaterial(); //Assert.AreEqual(requisicaoDeCompra.Numero, processoDeCotacao.RequisicaoDeCompra.Numero); //Assert.AreEqual(requisicaoDeCompra.NumeroItem, processoDeCotacao.RequisicaoDeCompra.NumeroItem); var item = (ProcessoDeCotacaoDeMaterialItem)processoDeCotacao.Itens.First(); Assert.AreEqual(requisicaoDeCompra.Numero, item.RequisicaoDeCompra.Numero); Assert.AreEqual(requisicaoDeCompra.NumeroItem, item.RequisicaoDeCompra.NumeroItem); }
public void NaoEPermitidoUtilizarMesmoItemDeRequisicaoEmMaisDeUmProcessoDeCotacao() { RequisicaoDeCompra requisicaoDeCompra = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); ProcessoDeCotacaoDeMaterial processo1 = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialNaoIniciado(); processo1.AdicionarItem(requisicaoDeCompra); //tenta adicionar a mesma requisição de compra no segundo processo ProcessoDeCotacaoDeMaterial processo2 = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialNaoIniciado(); processo2.AdicionarItem(requisicaoDeCompra); }
public void ConsigoListarAsRequisicoesDeCompra() { RemoveQueries.RemoverRequisicoesDeCompraCadastradas(); RequisicaoDeCompra requisicao1 = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); RequisicaoDeCompra requisicao2 = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicao1); DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicao2); var consultaRequisicao = ObjectFactory.GetInstance <IConsultaRequisicaoDeCompra>(); var kendoGridVm = consultaRequisicao.Listar(DefaultObjects.ObtemPaginacaoDefault(), new RequisicaoDeCompraFiltroVm(10)); Assert.AreEqual(2, kendoGridVm.QuantidadeDeRegistros); }
public static RequisicaoDeCompra ObtemRequisicaoDeCompraSemRequisitanteEFornecedor() { var usuarioCriador = ObtemUsuarioPadrao(); var material = ObtemProdutoPadrao(); UnidadeDeMedida unidadeDeMedida = ObtemUnidadeDeMedidaPadrao(); var dataDeRemessa = DateTime.Today.AddDays(-2); var dataDeLiberacao = DateTime.Today.AddDays(-1); var dataDeSolicitacao = DateTime.Today; var requisicaoDeCompra = new RequisicaoDeCompra(usuarioCriador, null, null, dataDeRemessa, dataDeLiberacao, dataDeSolicitacao, "C001", unidadeDeMedida, 1000, material, "Requisição de Compra enviada pelo SAP", "00001", "REQ0001", "GC1", false); return(requisicaoDeCompra); }
public void QuandoFiltroRequisicoesAtivasTodasRequisicaoRetornadasEstaoAtivas() { RemoveQueries.RemoverRequisicoesDeCompraCadastradas(); RequisicaoDeCompra requisicaoDeCompra1 = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); RequisicaoDeCompra requisicaoDeCompra2 = DefaultObjects.ObtemRequisicaoDeCompraPadrao(); requisicaoDeCompra2.Bloquear(); DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicaoDeCompra1); DefaultPersistedObjects.PersistirRequisicaoDeCompra(requisicaoDeCompra2); var requisicoesDeCompra = ObjectFactory.GetInstance <IRequisicoesDeCompra>(); var requisicoesAtivas = requisicoesDeCompra.SomenteAtivas().List(); Assert.AreEqual(1, requisicoesAtivas.Count); Assert.AreEqual(requisicaoDeCompra1.Id, requisicoesAtivas.Single().Id); }
public void QuandoFiltroProcessosDeCotacaoPorRequisicaoDeCompraRetornaApenasProcessosVinculadosComARequisicao() { //crio duas requisicoes de compra e um processo para cada requisicão ProcessoDeCotacaoDeMaterial processoDeCotacao1 = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAtualizado(); RequisicaoDeCompra requisicaoDeCompra1 = ((ProcessoDeCotacaoDeMaterialItem)processoDeCotacao1.Itens.Single()).RequisicaoDeCompra; ProcessoDeCotacaoDeMaterial processoDeCotacao2 = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAtualizado(); DefaultPersistedObjects.PersistirProcessosDeCotacaoDeMaterial(new List <ProcessoDeCotacaoDeMaterial> { processoDeCotacao1, processoDeCotacao2 }); //filtra os processos por uma das requisições var processosDeCotacao = ObjectFactory.GetInstance <IProcessosDeCotacaoDeMaterial>(); var processosConsultados = processosDeCotacao.GeradosPelaRequisicaoDeCompra(requisicaoDeCompra1.Id).Count(); //retorna apenas o processo vinculado com a requisição indicada Assert.AreEqual(1, processosConsultados); //Assert.AreEqual(processoDeCotacao1.Id, processosConsultados.Single().Id); }
private static RequisicaoDeCompra ObtemRequisicaoDeCompraPadrao(Produto produto) { var usuarioCriador = ObtemUsuarioPadrao(); var fornecedorPretendido = ObtemFornecedorPadrao(); var dataDeRemessa = DateTime.Today.AddDays(-2); var dataDeLiberacao = DateTime.Today.AddDays(-1); var dataDeSolicitacao = DateTime.Today; _contadorRequisicaoCompra++; string numeroRequisicao = GeraCodigo(_contadorRequisicaoCompra, 10); string numeroItem = GeraCodigo(_contadorRequisicaoCompra, 5); var requisicaoDeCompra = new RequisicaoDeCompra(usuarioCriador, "requisitante", fornecedorPretendido, dataDeRemessa, dataDeLiberacao, dataDeSolicitacao, "C001", ObtemUnidadeDeMedidaPadrao(), 1000, produto, "Requisição de Compra enviada pelo SAP", numeroItem, numeroRequisicao, "GC1", false); return(requisicaoDeCompra); }
public void QuandoConsultoUmaCotacaoDoFornecedorParaUmItemQueAindaNaoFoiPreenchidaRetornaOsDadosEsperados() { ProcessoDeCotacaoDeMaterial processo = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAbertoPadrao(); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processo); Fornecedor fornecedor = processo.FornecedoresParticipantes.First().Fornecedor; var itemDoProcesso = (ProcessoDeCotacaoDeMaterialItem)processo.Itens.First(); RequisicaoDeCompra requisicaoDeCompra = itemDoProcesso.RequisicaoDeCompra; var consulta = ObjectFactory.GetInstance <IConsultaCotacaoDoFornecedor>(); CotacaoMaterialItemCadastroVm vm = consulta.ConsultarCotacaoDeItemDeMaterial(processo.Id, fornecedor.Codigo, requisicaoDeCompra.Numero, requisicaoDeCompra.NumeroItem); Assert.IsNotNull(vm); Assert.AreEqual(itemDoProcesso.Produto.Descricao, vm.Material); Assert.AreEqual(itemDoProcesso.Quantidade, vm.Quantidade); Assert.AreEqual(itemDoProcesso.UnidadeDeMedida.Descricao, vm.UnidadeDeMedida); Assert.IsNull(vm.ValorComImpostos); Assert.IsNull(vm.Preco); Assert.IsNull(vm.Mva); }
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; } }
public KendoGridVm ConsultarResumo(PaginacaoVm paginacaoVm, EficienciaNegociacaoFiltroVm filtro) { IQueryOver <ProcessoDeCotacao, ProcessoDeCotacao> queryOver = _processosDeCotacaoDeMaterial.GetQueryOver(); queryOver = queryOver .Where(x => x.GetType() == typeof(ProcessoDeCotacaoDeMaterial)) .And(x => x.Status == Enumeradores.StatusProcessoCotacao.Fechado); Usuario compradorAlias = null; queryOver = queryOver .JoinAlias(x => x.Comprador, () => compradorAlias); if (!string.IsNullOrEmpty(filtro.LoginComprador)) { queryOver = queryOver.Where(() => compradorAlias.Login == filtro.LoginComprador); } if (filtro.DataDeFechamentoInicial.HasValue) { queryOver = queryOver.Where(x => x.DataDeFechamento >= filtro.DataDeFechamentoInicial.Value); } if (filtro.DataDeFechamentoFinal.HasValue) { queryOver = queryOver.Where(x => x.DataDeFechamento <= filtro.DataDeFechamentoFinal.Value); } ProcessoDeCotacaoDeMaterialItem processoDeCotacaoItem = null; queryOver = queryOver .JoinAlias(x => x.Itens, () => processoDeCotacaoItem); //para contabilizar os registros a query deve ser feita antes de fazer junção com as outras tabelas, para evitar repetições. //Precisa ter junção apenas com os itens do processo de cotação var contadorDeRegistros = queryOver.ToRowCountQuery().SingleOrDefault <int>(); EficienciaDeNegociacaoResumoVm eficienciaDeNegociacaoResumoVm = null; FornecedorParticipante fornecedorParticipante = null; Cotacao cotacao = null; CotacaoMaterialItem cotacaoItem = null; Produto produto = null; RequisicaoDeCompra requisicaoDeCompra = null; queryOver = queryOver .JoinAlias(() => processoDeCotacaoItem.Produto, () => produto) .JoinAlias(() => processoDeCotacaoItem.RequisicaoDeCompra, () => requisicaoDeCompra) .JoinAlias(x => x.FornecedoresParticipantes, () => fornecedorParticipante) .JoinAlias(() => fornecedorParticipante.Cotacao, () => cotacao) .JoinAlias(() => cotacao.Itens, () => cotacaoItem) .Where(() => cotacaoItem.Selecionada); //Para calcular o percentual e o valor de eficiência tive que utilizar SQLProjection porque o método SelectSum() // não entende uma expressão lambda, como por exemplo, "() => (PrecoInicial - Preco) * QuantidadeAdquirida)". //O método espera uma expressao lambda com o nome de uma propriedade que leve, para uma coluna do mapeamento. IProjection projecaoValorDeEficiencia = Projections.SqlProjection("SUM((PrecoInicial - Preco) * QuantidadeAdquirida) AS ValorDeEficiencia", new[] { "ValorDeEficiencia" }, new IType[] { NHibernateUtil.Decimal }); IProjection projecaoPercentualDeEficiencia = Projections.SqlProjection( "ROUND(SUM((PrecoInicial - Preco) * QuantidadeAdquirida) / SUM(PrecoInicial * QuantidadeAdquirida) * 100, 2) AS PercentualDeEficiencia", new[] { "PercentualDeEficiencia" }, new IType[] { NHibernateUtil.Decimal }); IList <EficienciaDeNegociacaoResumoVm> eficiencias = queryOver .SelectList(list => list .SelectGroup(x => x.Id).WithAlias(() => eficienciaDeNegociacaoResumoVm.IdProcessoCotacao) .SelectGroup(() => processoDeCotacaoItem.Id).WithAlias(() => eficienciaDeNegociacaoResumoVm.IdProcessoCotacaoItem) .SelectGroup(x => compradorAlias.Nome).WithAlias(() => eficienciaDeNegociacaoResumoVm.Comprador) .SelectGroup(() => produto.Descricao).WithAlias(() => eficienciaDeNegociacaoResumoVm.Produto) .SelectGroup(() => requisicaoDeCompra.Numero).WithAlias(() => eficienciaDeNegociacaoResumoVm.NumeroDaRequisicao) .SelectGroup(() => requisicaoDeCompra.NumeroItem).WithAlias(() => eficienciaDeNegociacaoResumoVm.NumeroDoItem) .Select(projecaoValorDeEficiencia) .Select(projecaoPercentualDeEficiencia) ) .TransformUsing(Transformers.AliasToBean <EficienciaDeNegociacaoResumoVm>()) .Skip(paginacaoVm.Skip) .Take(paginacaoVm.Take) .List <EficienciaDeNegociacaoResumoVm>(); var eficienciaTotal = queryOver .SelectList(list => list .Select(Projections.Constant("TOTAL")).WithAlias(() => eficienciaDeNegociacaoResumoVm.Produto) .Select(projecaoValorDeEficiencia) .Select(projecaoPercentualDeEficiencia) ) .TransformUsing(Transformers.AliasToBean <EficienciaDeNegociacaoResumoVm>()) .SingleOrDefault <EficienciaDeNegociacaoResumoVm>(); eficiencias.Add(eficienciaTotal); return(new KendoGridVm { QuantidadeDeRegistros = contadorDeRegistros + 1, //soma 1 por causa do registro de total Registros = eficiencias.Cast <ListagemVm>().ToList() }); }
public void AdicionarRequisicaoDeCompra(RequisicaoDeCompra requisicaoDeCompra) { _requisicoesDeCompra.Add(requisicaoDeCompra); }