public ProcessoDeCotacaoDeFreteFechamentoTests() { _unitOfWorkMock = CommonMocks.DefaultUnitOfWorkMock(); _processosDeCotacaoMock = new Mock <IProcessosDeCotacao>(MockBehavior.Strict); _processosDeCotacaoMock.Setup(x => x.Save(It.IsAny <ProcessoDeCotacao>())) .Callback( (ProcessoDeCotacao processoDeCotacao) => { _unitOfWorkMock.Verify(x => x.BeginTransaction(), Times.Once()); _unitOfWorkMock.Verify(x => x.Commit(), Times.Never()); Assert.IsNotNull(processoDeCotacao); foreach (var fornecedorParticipante in processoDeCotacao.FornecedoresParticipantes) { Assert.IsNotNull(fornecedorParticipante); } }); _processosDeCotacaoMock.Setup(x => x.BuscaPorId(It.IsAny <int>())) .Returns(_processosDeCotacaoMock.Object) .Callback((int idProcessoCotacao) => { _unitOfWorkMock.Verify(x => x.BeginTransaction(), Times.Once()); _unitOfWorkMock.Verify(x => x.Commit(), Times.Never()); if (idProcessoCotacao == 10) { _processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAtualizado(); Fornecedor fornecedor = DefaultObjects.ObtemFornecedorPadrao(); _processoDeCotacao.AdicionarFornecedor(fornecedor); _processoDeCotacao.Abrir(DefaultObjects.ObtemCompradorDeSuprimentos()); _processoDeCotacao.InformarCotacao(fornecedor.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "desc incoterm"); _processoDeCotacao.InformarCotacaoDeItem(0, 0, 10, 1, 100, DateTime.Today.AddDays(10), "obs"); _processoDeCotacao.SelecionarCotacao(0, 0, 1, null); } if (idProcessoCotacao == 20) { _processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAbertoPadrao(); var codigoFornecedor = _processoDeCotacao.FornecedoresParticipantes.First().Fornecedor.Codigo; var cotacao = _processoDeCotacao.InformarCotacao(codigoFornecedor, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "inc"); var processoCotacaoItem = _processoDeCotacao.Itens.First(); var cotacaoItem = (CotacaoMaterialItem)cotacao.InformarCotacaoDeItem(processoCotacaoItem, 150, null, 100, DateTime.Today.AddMonths(1), "obs fornec"); cotacaoItem.Selecionar(100, DefaultObjects.ObtemIvaPadrao()); } if (idProcessoCotacao == 30) { _processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialFechado(); } }); _processosDeCotacaoMock.Setup(x => x.Single()).Returns(() => _processoDeCotacao); _geradorDeEmailMock = new Mock <IGeradorDeEmailDeFechamentoDeProcessoDeCotacao>(MockBehavior.Strict); _geradorDeEmailMock.Setup(x => x.GerarEmail(It.IsAny <ProcessoDeCotacao>())); _comunicacaoSapMock = new Mock <IProcessoDeCotacaoComunicacaoSap>(MockBehavior.Strict); _comunicacaoSapMock.Setup(x => x.EfetuarComunicacao(It.IsAny <ProcessoDeCotacao>())) .Returns(new ApiResponseMessage { Retorno = new Retorno { Codigo = "200", Texto = "S" } }); _fechamentoDeProcessoDeCotacaoService = new FechamentoDeProcessoDeCotacaoDeFreteService(_unitOfWorkMock.Object, _processosDeCotacaoMock.Object, _geradorDeEmailMock.Object, _comunicacaoSapMock.Object); }
public void ConsigoPersistirEConsultarUmProcessoDeCotacaoComHistoricoDePrecos() { ProcessoDeCotacaoDeMaterial processo = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAberto(DefaultObjects.ObtemCompradorDeSuprimentos()); string codigoFornecedor = processo.FornecedoresParticipantes.Single().Fornecedor.Codigo; int idProcessoCotacaoItem = processo.Itens.Single().Id; CotacaoMaterial cotacao = processo.InformarCotacao(codigoFornecedor, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "inc"); var cotacaoItem = (CotacaoMaterialItem)processo.InformarCotacaoDeItem(idProcessoCotacaoItem, cotacao.Id, 100, 0, 20, DateTime.Today.AddDays(5), "obs"); cotacaoItem.Atualizar(95, 0, 20, DateTime.Today.AddDays(5), "obs"); Assert.AreEqual(2, cotacaoItem.HistoricosDePreco.Count); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processo); var processosDeCotacaoDeMaterial = ObjectFactory.GetInstance <IProcessosDeCotacao>(); var processoConsultado = processosDeCotacaoDeMaterial.BuscaPorId(processo.Id).Single(); Assert.AreEqual(2, processoConsultado.FornecedoresParticipantes.Single().Cotacao.Itens.Single().HistoricosDePreco.Count); }
public void QuandoAtualizoUmaItemDaCotacaoEoPrecoEAlteradoAdicionaHistoricoDePreco() { ProcessoDeCotacaoDeMaterial processo = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAberto(DefaultObjects.ObtemCompradorDeSuprimentos()); string codigoFornecedor = processo.FornecedoresParticipantes.Single().Fornecedor.Codigo; int idProcessoCotacaoItem = processo.Itens.Single().Id; CotacaoMaterial cotacao = processo.InformarCotacao(codigoFornecedor, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "inc"); var cotacaoItem = (CotacaoMaterialItem)processo.InformarCotacaoDeItem(idProcessoCotacaoItem, cotacao.Id, 100, 0, 20, DateTime.Today.AddDays(5), "obs"); Assert.AreEqual(1, cotacaoItem.HistoricosDePreco.Count); cotacaoItem.Atualizar(95, 0, 20, DateTime.Now.Date, "obs"); Assert.AreEqual(2, cotacaoItem.HistoricosDePreco.Count); Assert.AreEqual(95, cotacaoItem.HistoricosDePreco.Last().Valor); }
public void QuandoConsultaEficienciaNegociacaoRetornaEficienciaDosProcessosFechados() { RemoveQueries.RemoverProcessosDeCotacaoCadastrados(); //cria dois compradores Usuario comprador1 = DefaultObjects.ObtemCompradorDeSuprimentos(); Usuario comprador2 = DefaultObjects.ObtemCompradorDeSuprimentos(); //cria um processo aberto e um fechado para o comprador1 ProcessoDeCotacaoDeMaterial processo11 = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAberto(comprador1); var cotacaoMaterial11 = processo11.InformarCotacao(processo11.FornecedoresParticipantes.Single().Fornecedor.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "incoterm 2"); var cotacaoItem11 = cotacaoMaterial11.InformarCotacaoDeItem(processo11.Itens.Single(), 100, 0, 50, DateTime.Today.AddDays(5), "obs11"); cotacaoItem11.InformarImposto(Enumeradores.TipoDeImposto.Icms, 12); cotacaoItem11.InformarImposto(Enumeradores.TipoDeImposto.Ipi, 10); cotacaoItem11.InformarImposto(Enumeradores.TipoDeImposto.PisCofins, 9); var processoDeCotacaoItem11 = (ProcessoDeCotacaoDeMaterialItem)processo11.Itens.Single(); //cotacaoItem11.Atualizar(95,50,"obs11"); cotacaoItem11.Selecionar(50); processo11.Fechar(); ProcessoDeCotacaoDeMaterial processo12 = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAberto(comprador1); //cria um processo aberto e um fechado para o comprador2 ProcessoDeCotacaoDeMaterial processo21 = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAberto(comprador2); var cotacaoMaterial21 = processo21.InformarCotacao(processo21.FornecedoresParticipantes.Single().Fornecedor.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "incoterm 2"); var cotacaoItem21 = cotacaoMaterial21.InformarCotacaoDeItem(processo21.Itens.Single(), 110, 0, 50, DateTime.Today.AddDays(5), "obs21"); cotacaoItem21.InformarImposto(Enumeradores.TipoDeImposto.Icms, 12); cotacaoItem21.InformarImposto(Enumeradores.TipoDeImposto.Ipi, 10); cotacaoItem21.InformarImposto(Enumeradores.TipoDeImposto.PisCofins, 9); cotacaoItem21.Atualizar(99, 50, "obs21"); cotacaoItem21.Selecionar(50); processo21.Fechar(); var processoDeCotacaoItem21 = (ProcessoDeCotacaoDeMaterialItem)processo21.Itens.Single(); ProcessoDeCotacaoDeMaterial processo22 = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAberto(comprador2); DefaultPersistedObjects.PersistirProcessosDeCotacaoDeMaterial(new List <ProcessoDeCotacaoDeMaterial> { processo11, processo12, processo21, processo22 }); var consulta = ObjectFactory.GetInstance <IConsultaEficienciaDeNegociacao>(); KendoGridVm kendoGridVm = consulta.ConsultarResumo(DefaultObjects.ObtemPaginacaoDefault(), new EficienciaNegociacaoFiltroVm()); //retorna um registro para cada comprador Assert.AreEqual(3, kendoGridVm.QuantidadeDeRegistros); var eficiencias = kendoGridVm.Registros.Cast <EficienciaDeNegociacaoResumoVm>().ToList(); var eficienciaDoComprador1 = eficiencias.Single(x => x.Comprador == comprador1.Nome); Assert.AreEqual(processo11.Id, eficienciaDoComprador1.IdProcessoCotacao); Assert.AreEqual(processoDeCotacaoItem11.Id, eficienciaDoComprador1.IdProcessoCotacaoItem); Assert.AreEqual(cotacaoItem11.ProcessoDeCotacaoItem.Produto.Descricao, eficienciaDoComprador1.Produto); Assert.AreEqual(processoDeCotacaoItem11.RequisicaoDeCompra.Numero, eficienciaDoComprador1.NumeroDaRequisicao); Assert.AreEqual(processoDeCotacaoItem11.RequisicaoDeCompra.NumeroItem, eficienciaDoComprador1.NumeroDoItem); Assert.AreEqual(0, eficienciaDoComprador1.ValorDeEficiencia); Assert.AreEqual(0, eficienciaDoComprador1.PercentualDeEficiencia); var eficienciaDoComprador2 = eficiencias.Single(x => x.Comprador == comprador2.Nome); Assert.AreEqual(processo21.Id, eficienciaDoComprador2.IdProcessoCotacao); Assert.AreEqual(processoDeCotacaoItem21.Id, eficienciaDoComprador2.IdProcessoCotacaoItem); Assert.AreEqual(cotacaoItem21.ProcessoDeCotacaoItem.Produto.Descricao, eficienciaDoComprador2.Produto); Assert.AreEqual(processoDeCotacaoItem21.RequisicaoDeCompra.Numero, eficienciaDoComprador2.NumeroDaRequisicao); Assert.AreEqual(processoDeCotacaoItem21.RequisicaoDeCompra.NumeroItem, eficienciaDoComprador2.NumeroDoItem); Assert.AreEqual(550, eficienciaDoComprador2.ValorDeEficiencia); Assert.AreEqual(10, eficienciaDoComprador2.PercentualDeEficiencia); var eficienciaTotal = eficiencias.Single(x => x.Produto == "TOTAL"); Assert.IsNotNull(eficienciaTotal); Assert.AreEqual(550, eficienciaTotal.ValorDeEficiencia); Assert.AreEqual((decimal)5.24, eficienciaTotal.PercentualDeEficiencia); }
public void ConsigoConsultarAsCotacoesDetalhadasDeTodosOsFornecedores() { Fornecedor fornecedor1 = DefaultObjects.ObtemFornecedorPadrao(); Fornecedor fornecedor2 = DefaultObjects.ObtemFornecedorPadrao(); Fornecedor fornecedor3 = DefaultObjects.ObtemFornecedorPadrao(); //crio um processo de cotação com um item e três fornecedores. ProcessoDeCotacaoDeMaterial processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialAtualizado(); ProcessoDeCotacaoItem processoDeCotacaoItem = processoDeCotacao.Itens.Single(); processoDeCotacao.AdicionarFornecedor(fornecedor1); processoDeCotacao.AdicionarFornecedor(fornecedor2); processoDeCotacao.AdicionarFornecedor(fornecedor3); processoDeCotacao.Abrir(DefaultObjects.ObtemCompradorDeSuprimentos()); //para os fornecedores 1 e 3 informo o preço duas vezes CotacaoMaterial cotacaoFornecedor1 = processoDeCotacao.InformarCotacao(fornecedor1.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "inc"); CotacaoItem cotacaoItemFornecedor1 = cotacaoFornecedor1.InformarCotacaoDeItem(processoDeCotacaoItem, 1000, 0, 200, DateTime.Today.AddDays(10), "OBS"); cotacaoFornecedor1.InformarCotacaoDeItem(processoDeCotacaoItem, 995, 0, 200, DateTime.Today.AddDays(10), "OBS"); CotacaoMaterial cotacaoFornecedor3 = processoDeCotacao.InformarCotacao(fornecedor3.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "inc"); cotacaoFornecedor3.InformarCotacaoDeItem(processoDeCotacaoItem, 1010, 0, 100, DateTime.Today.AddDays(10), "OBS"); cotacaoFornecedor3.InformarCotacaoDeItem(processoDeCotacaoItem, 1000, 0, 100, DateTime.Today.AddDays(10), "OBS"); //para o fornecedor 2 informo o preço apenas uma vez CotacaoMaterial cotacaoFornecedor2 = processoDeCotacao.InformarCotacao(fornecedor2.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "inc"); cotacaoFornecedor2.InformarCotacaoDeItem(processoDeCotacaoItem, 1200, 0, 100, DateTime.Today.AddDays(10), "OBS"); //seleciono apenas o fornecedor 1 cotacaoItemFornecedor1.Selecionar(200); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processoDeCotacao); var consultaProcesso = ObjectFactory.GetInstance <IConsultaProcessoDeCotacaoDeMaterial>(); IList <FornecedorCotacaoVm> cotacoes = consultaProcesso.CotacoesDetalhadaDosFornecedores(processoDeCotacao.Id, processoDeCotacaoItem.Id); Assert.AreEqual(3, cotacoes.Count); //asserts fornecedor 1 FornecedorCotacaoVm fornecedorCotacaoVm1 = cotacoes.Single(x => x.Codigo == fornecedor1.Codigo); Assert.AreEqual(1000, fornecedorCotacaoVm1.PrecoInicial); Assert.AreEqual(995, fornecedorCotacaoVm1.PrecoFinal); Assert.IsTrue(fornecedorCotacaoVm1.Selecionada); Assert.AreEqual(200, fornecedorCotacaoVm1.QuantidadeAdquirida); //Assert.AreEqual(2, fornecedorCotacaoVm1.Precos.Length); Assert.AreEqual(2, fornecedorCotacaoVm1.Precos.Count()); Assert.AreEqual(1000, fornecedorCotacaoVm1.Precos[0]); Assert.AreEqual(995, fornecedorCotacaoVm1.Precos[1]); //asserts fornecedor 2 FornecedorCotacaoVm fornecedorCotacaoVm2 = cotacoes.Single(x => x.Codigo == fornecedor2.Codigo); Assert.AreEqual(1200, fornecedorCotacaoVm2.PrecoInicial); Assert.AreEqual(1200, fornecedorCotacaoVm2.PrecoFinal); Assert.IsFalse(fornecedorCotacaoVm2.Selecionada); Assert.AreEqual(0, fornecedorCotacaoVm2.QuantidadeAdquirida); //Assert.AreEqual(1, fornecedorCotacaoVm2.Precos.Length); Assert.AreEqual(1, fornecedorCotacaoVm2.Precos.Count()); Assert.AreEqual(1200, fornecedorCotacaoVm2.Precos[0]); //asserts fornecedor 3 FornecedorCotacaoVm fornecedorCotacaoVm3 = cotacoes.Single(x => x.Codigo == fornecedor3.Codigo); Assert.AreEqual(1010, fornecedorCotacaoVm3.PrecoInicial); Assert.AreEqual(1000, fornecedorCotacaoVm3.PrecoFinal); Assert.IsFalse(fornecedorCotacaoVm3.Selecionada); Assert.AreEqual(0, fornecedorCotacaoVm3.QuantidadeAdquirida); //Assert.AreEqual(2, fornecedorCotacaoVm3.Precos.Length); Assert.AreEqual(2, fornecedorCotacaoVm3.Precos.Count()); Assert.AreEqual(1010, fornecedorCotacaoVm3.Precos[0]); Assert.AreEqual(1000, fornecedorCotacaoVm3.Precos[1]); }