public async Task <ActionResult <CotacaoItem> > PostCotacaoItem(CotacaoItem cotacaoItem) { _context.CotacaoItem.Add(cotacaoItem); await _context.SaveChangesAsync(); return(CreatedAtAction("GetCotacaoItem", new { id = cotacaoItem.CotacaoItemId }, cotacaoItem)); }
public async Task <IActionResult> PutCotacaoItem(int id, CotacaoItem cotacaoItem) { if (id != cotacaoItem.CotacaoItemId) { return(BadRequest()); } _context.Entry(cotacaoItem).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CotacaoItemExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public void QuandoCalculoBaseDeCalculoDeUmImpostoPadraoRetornaOPrecoDoItem() { ProcessoDeCotacaoDeMaterial processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialComCotacaoDoFornecedor(); CotacaoItem cotacaoItem = processoDeCotacao.FornecedoresParticipantes.Single().Cotacao.Itens.Single(); var calculador = new CalculadorDeBaseDeCalculoPadrao(); decimal baseDeCalculo = calculador.Calcular(cotacaoItem); Assert.AreEqual(cotacaoItem.Preco, baseDeCalculo); }
public void AtualizarImpostos(CotacaoItem cotacao, CotacaoImpostosVm cotacaoInformarVm) { cotacao.InformarImposto(Enumeradores.TipoDeImposto.Icms, cotacaoInformarVm.IcmsAliquota.Value); cotacao.InformarImposto(Enumeradores.TipoDeImposto.IcmsSubstituicao, cotacaoInformarVm.IcmsStAliquota.Value); cotacao.InformarImposto(Enumeradores.TipoDeImposto.Ipi, cotacaoInformarVm.IpiAliquota.Value); cotacao.InformarImposto(Enumeradores.TipoDeImposto.PisCofins, cotacaoInformarVm.PisCofinsAliquota.Value); //cotacao.InformarImposto(Enumeradores.TipoDeImposto.Pis, cotacaoInformarVm.PisAliquota, cotacaoInformarVm.PisValor); //cotacao.InformarImposto(Enumeradores.TipoDeImposto.Cofins, cotacaoInformarVm.CofinsAliquota, cotacaoInformarVm.CofinsValor); }
//public ComunicacaoFechamentoProcessoCotacaoFrete(CredencialSap credencialSap) //{ // _comunicacaoSap = new ComunicacaoSap<ListaProcessoDeCotacaoDeFreteFechamento>(credencialSap); //} public ApiResponseMessage EfetuarComunicacao(ProcessoDeCotacao processo) { ProcessoDeCotacaoItem item = processo.Itens.First(); if (item.Produto.NaoEstocavel) { //Cotações de frete para empresas do grupo que não utilizam o SAP deverão ser realizadas com material NLAG //(Material não estocável). Para este tipo de material a cotação não deverá ser enviada para o SAP; return(new ApiResponseMessage { Retorno = new Retorno { Codigo = "200", Texto = "S" } }); } var mensagemParaEnviar = new ListaProcessoDeCotacaoDeFreteFechamento(); var processoAuxiliar = (ProcessoDeCotacaoDeFrete)processo.CastEntity(); foreach (var fornecedorParticipante in processoAuxiliar.FornecedoresParticipantes) { if (fornecedorParticipante.Cotacao != null && fornecedorParticipante.Cotacao.Itens.First().Selecionada) { CotacaoItem itemDaCotacao = fornecedorParticipante.Cotacao.Itens.First(); mensagemParaEnviar.Add(new ProcessoDeCotacaoDeFreteFechamentoComunicacaoSapVm { CodigoTransportadora = fornecedorParticipante.Fornecedor.Codigo, //CodigoMaterial = processoAuxiliar.Produto.Codigo, CodigoMaterial = item.Produto.Codigo, //CodigoUnidadeMedida = processoAuxiliar.UnidadeDeMedida.CodigoInterno, CodigoUnidadeMedida = item.UnidadeDeMedida.CodigoInterno, CodigoItinerario = processoAuxiliar.Itinerario.Codigo, DataDeValidadeInicial = processoAuxiliar.DataDeValidadeInicial.ToString("yyyyMMdd"), DataDeValidaFinal = processoAuxiliar.DataDeValidadeFinal.ToString("yyyyMMdd"), NumeroDoContrato = processoAuxiliar.NumeroDoContrato ?? "", Valor = itemDaCotacao.ValorComImpostos }); } } ApiResponseMessage apiResponseMessage = _comunicacaoSap.EnviarMensagem( "/HttpAdapter/HttpMessageServlet?senderParty=PORTAL&senderService=HTTP&interfaceNamespace=http://portal.bsbios.com.br/&interface=si_cotacaoFreteFechamento_portal&qos=be" , mensagemParaEnviar); if (apiResponseMessage.Retorno.Codigo == "E") { throw new ComunicacaoSapException("json", "Ocorreu um erro ao comunicar o fechamento do Processo de Cotação de Frete para o SAP. Detalhes: " + apiResponseMessage.Retorno.Texto); } return(apiResponseMessage); }
public void QuandoCalculaBaseDeCalculoDeUmImpostoComRetencaoRetornaValorCorreto() { ProcessoDeCotacaoDeMaterial processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialDeMateriaPrima(); Fornecedor fornecedor = DefaultObjects.ObtemFornecedorPadrao(); processoDeCotacao.AdicionarFornecedor(fornecedor); processoDeCotacao.Abrir(DefaultObjects.ObtemUsuarioPadrao()); CotacaoMaterial cotacao = processoDeCotacao.InformarCotacao(fornecedor.Codigo, DefaultObjects.ObtemCondicaoDePagamentoPadrao(), DefaultObjects.ObtemIncotermPadrao(), "descriçao"); var processoDeCotacaoDeMaterialItem = (ProcessoDeCotacaoDeMaterialItem)processoDeCotacao.Itens.Single(); CotacaoItem cotacaoItem = cotacao.InformarCotacaoDeItem(processoDeCotacaoDeMaterialItem, 100, 0, 10, DateTime.Today.AddDays(10), "obs"); cotacaoItem.InformarImposto(Enumeradores.TipoDeImposto.Icms, 12); cotacaoItem.InformarImposto(Enumeradores.TipoDeImposto.PisCofins, (decimal)9.25); var calculador = new CalculadorDeBaseDeCalculoComCreditoDeImpostos(); decimal baseDeCalculo = calculador.Calcular(cotacaoItem); Assert.AreEqual((decimal)78.75, baseDeCalculo); }
public void ConsigoConsultarCotacaoResumidaDosFornecedoresDeUmProcessoDeCotacaoDeFrete() { ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComCotacaoNaoSelecionada(); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processo); FornecedorParticipante fornecedorParticipante = processo.FornecedoresParticipantes.Single(); Fornecedor fornecedor = fornecedorParticipante.Fornecedor; CotacaoItem cotacaoItem = fornecedorParticipante.Cotacao.Itens.Single(); var consulta = ObjectFactory.GetInstance <IConsultaProcessoDeCotacaoDeFrete>(); KendoGridVm kendoGridVm = consulta.CotacoesDosFornecedoresResumido(processo.Id); Assert.AreEqual(1, kendoGridVm.QuantidadeDeRegistros); ProcessoCotacaoFornecedorVm vm = kendoGridVm.Registros.Cast <ProcessoCotacaoFornecedorVm>().Single(); Assert.AreEqual(fornecedor.Codigo, vm.Codigo); Assert.AreEqual(fornecedor.Nome, vm.Nome); Assert.AreEqual(fornecedorParticipante.Id, vm.IdFornecedorParticipante); Assert.AreEqual(cotacaoItem.QuantidadeDisponivel, vm.QuantidadeDisponivel); Assert.AreEqual("Não", vm.Selecionado); Assert.AreEqual(cotacaoItem.ValorComImpostos, vm.ValorComImpostos); Assert.AreEqual(cotacaoItem.Preco, vm.ValorLiquido); }
public void AtualizarItemDaCotacao(CotacaoMaterialItemInformarVm cotacaoMaterialItemInformarVm) { try { _unitOfWork.BeginTransaction(); var processoDeCotacao = (ProcessoDeCotacaoDeMaterial)_processosDeCotacao.BuscaPorId(cotacaoMaterialItemInformarVm.IdProcessoCotacao).Single(); CotacaoItem cotacaoItem = processoDeCotacao.InformarCotacaoDeItem(cotacaoMaterialItemInformarVm.IdProcessoCotacaoItem, cotacaoMaterialItemInformarVm.IdCotacao, cotacaoMaterialItemInformarVm.Preco.Value, cotacaoMaterialItemInformarVm.Mva, cotacaoMaterialItemInformarVm.QuantidadeDisponivel.Value, Convert.ToDateTime(cotacaoMaterialItemInformarVm.PrazoDeEntrega), cotacaoMaterialItemInformarVm.ObservacoesDoFornecedor); AtualizarImpostos(cotacaoItem, cotacaoMaterialItemInformarVm.Impostos); _processosDeCotacao.Save(processoDeCotacao); _unitOfWork.Commit(); } catch (Exception) { _unitOfWork.RollBack(); throw; } }
public decimal Calcular(CotacaoItem cotacaoItem) { return(cotacaoItem.Preco - cotacaoItem.ValorDoImposto(Enumeradores.TipoDeImposto.Icms) - cotacaoItem.ValorDoImposto(Enumeradores.TipoDeImposto.PisCofins)); }
public CotacaoMaterialItemCadastroVm ConsultarCotacaoDeItemDeMaterial(int idProcessoCotacao, string codigoFornecedor, string numeroDaRequisicao, string numeroDoItemDaRequisicao) { var processoDeCotacao = (ProcessoDeCotacaoDeMaterial)_processosDeCotacao.BuscaPorId(idProcessoCotacao).Single(); var itemDoProcessoDeCotacao = processoDeCotacao.Itens.Single(item => { var itemMaterial = (ProcessoDeCotacaoDeMaterialItem)item; return(itemMaterial.RequisicaoDeCompra.Numero == numeroDaRequisicao && itemMaterial.RequisicaoDeCompra.NumeroItem == numeroDoItemDaRequisicao); }); var vm = new CotacaoMaterialItemCadastroVm { IdProcessoCotacao = idProcessoCotacao, IdProcessoCotacaoItem = itemDoProcessoDeCotacao.Id, Material = itemDoProcessoDeCotacao.Produto.Descricao, Quantidade = itemDoProcessoDeCotacao.Quantidade, UnidadeDeMedida = itemDoProcessoDeCotacao.UnidadeDeMedida.Descricao }; var fp = processoDeCotacao.FornecedoresParticipantes.Single(x => x.Fornecedor.Codigo == codigoFornecedor); CotacaoItem itemCotacao = null; if (fp.Cotacao != null) { vm.IdCotacao = fp.Cotacao.Id; itemCotacao = fp.Cotacao.Itens.SingleOrDefault(x => x.ProcessoDeCotacaoItem.Id == itemDoProcessoDeCotacao.Id); } if (itemCotacao != null) { var itemCotacaoMaterial = (CotacaoMaterialItem)itemCotacao; vm.IdCotacao = fp.Cotacao.Id; vm.IdCotacaoItem = itemCotacaoMaterial.Id; vm.Mva = itemCotacaoMaterial.Mva; vm.Preco = itemCotacaoMaterial.Preco; vm.ValorComImpostos = itemCotacaoMaterial.ValorComImpostos; vm.Custo = itemCotacaoMaterial.Custo; vm.ObservacoesDoFornecedor = itemCotacaoMaterial.Observacoes; vm.PrazoDeEntrega = itemCotacaoMaterial.PrazoDeEntrega.ToShortDateString(); vm.QuantidadeDisponivel = itemCotacao.QuantidadeDisponivel; vm.Impostos = _builderImpostos.BuildSingle(itemCotacaoMaterial); } else { vm.Impostos = new CotacaoImpostosVm(); } Usuario usuarioConectado = _usuarios.UsuarioConectado(); vm.PermiteVisualizarCustos = usuarioConectado.Permissao.PermiteVisualizarCustos; return(vm); //esta foi uma tentativa de fazer toda a consulta em uma única query, mas não chegou a ser testada //var query = _processosDeCotacao.GetQuery(); //var vm = (from pc in query // from fp in pc.FornecedoresParticipantes // where fp.Fornecedor.Codigo == codigoFornecedor // from itemProcesso in pc.Itens // let itemProcessoMaterial = (ProcessoDeCotacaoDeMaterialItem) itemProcesso // where itemProcessoMaterial.RequisicaoDeCompra.Numero == numeroDaRequisicao // && itemProcessoMaterial.RequisicaoDeCompra.NumeroItem == numeroDoItemDaRequisicao // from cotacaoItem in fp.Cotacao.Itens // where itemProcessoMaterial.Id == cotacaoItem.ProcessoDeCotacaoItem.Id // select new CotacaoMaterialItemCadastroVm // { // IdProcessoCotacao = idProcessoCotacao, // IdCotacao = fp.Cotacao.Id, // IdCotacaoItem = cotacaoItem.Id, // IdProcessoCotacaoItem = itemProcessoMaterial.Id, // Material = itemProcessoMaterial.Produto.Descricao // } // ).SingleOrDefault(); }
public decimal Calcular(CotacaoItem cotacaoItem) { return(cotacaoItem.Preco); }
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]); }