public void ReenviarEmailDeAbertura(int idProcessoCotacao, int idFornecedorParticipante)
        {
            ProcessoDeCotacao      processoDeCotacao      = _processosDeCotacao.BuscaPorId(idProcessoCotacao).Single();
            FornecedorParticipante fornecedorParticipante = processoDeCotacao.FornecedoresParticipantes.First(x => x.Id == idProcessoCotacao);

            _geradorDeEmail.GerarEmail(fornecedorParticipante);
        }
Beispiel #2
0
        public MensagemDeEmail AberturaDoProcessoDeCotacaoDeMaterial(ProcessoDeCotacao processoDeCotacao)
        {
            string mensagem = "Prezado Fornecedor. " + Environment.NewLine +
                              "A BSBIOS convida a participar do nosso processo de cotação para o Produto/Serviço " +
                              "conforme informações descritas abaixo. " + Environment.NewLine +
                              "Caso tenha interesse em participar favor acessar o Portal de Cotações (http://bsnet.bsbios.com/)." +
                              Environment.NewLine + Environment.NewLine;

            for (int i = 0; i < processoDeCotacao.Itens.Count; i++)
            {
                var item = processoDeCotacao.Itens[i];
                mensagem +=
                    "Item " + Convert.ToString(i + 1) + Environment.NewLine +
                    "Material: " + item.Produto.Descricao + Environment.NewLine +
                    "Quantidade: " + item.Quantidade + Environment.NewLine +
                    "Unidade de Medida: " + item.UnidadeDeMedida.Descricao + Environment.NewLine +
                    SeparadorDeItems + Environment.NewLine;
            }

            mensagem +=
                "Data Limite de Retorno: " + (processoDeCotacao.DataLimiteDeRetorno.HasValue
                     ? processoDeCotacao.DataLimiteDeRetorno.Value.ToShortDateString() : "") + Environment.NewLine +
                "Requisitos: " + processoDeCotacao.Requisitos + Environment.NewLine +
                SeparadorDeItems + Environment.NewLine +
                "Comprador" + Environment.NewLine +
                "Nome: " + processoDeCotacao.Comprador.Nome + Environment.NewLine +
                "E-mail: " + processoDeCotacao.Comprador.Email;

            return(new MensagemDeEmail("Cotação de Material", mensagem));
        }
Beispiel #3
0
        public void QuandoQuantidadeTotalForMaiorQueAQuantidadeDoProcessoNaoSuperouQuantidadeDoProcesso()
        {
            //retorna processo com quantidade 1000
            ProcessoDeCotacao processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialNaoIniciado();
            //Assert.IsTrue(processoDeCotacao.SuperouQuantidadeSolicitada(1001));
            var item = (ProcessoDeCotacaoDeMaterialItem)processoDeCotacao.Itens.First();

            Assert.IsTrue(item.SuperouQuantidadeSolicitada(1001));
        }
Beispiel #4
0
        public void GerarEmail(ProcessoDeCotacao processoDeCotacao)
        {
            MensagemDeEmail mensagemDeEmail = _geradorDeMensagemDeEmail.AberturaDoProcessoDeCotacaoDeFrete(processoDeCotacao);

            foreach (var fornecedorParticipante in processoDeCotacao.FornecedoresParticipantes)
            {
                _emailService.Enviar(fornecedorParticipante.Fornecedor.Email, mensagemDeEmail);
            }
        }
Beispiel #5
0
 public ApiResponseMessage EfetuarComunicacao(ProcessoDeCotacao processo)
 {
     return(new ApiResponseMessage
     {
         Retorno = new Retorno
         {
             Codigo = "200",
             Texto = "S"
         }
     });
 }
        public IList <CotacaoMaterialSelecionarVm> CotacoesDosFornecedores(int idProcessoCotacao, int idProcessoCotacaoItem)
        {
            var retorno = new List <CotacaoMaterialSelecionarVm>();
            ProcessoDeCotacao processoDeCotacao = _processosDeCotacao.BuscaPorId(idProcessoCotacao).Single();

            foreach (var fornecedorParticipante in processoDeCotacao.FornecedoresParticipantes)
            {
                var cotacaoSelecionarVm = new CotacaoMaterialSelecionarVm
                {
                    CodigoFornecedor = fornecedorParticipante.Fornecedor.Codigo,
                    Fornecedor       = fornecedorParticipante.Fornecedor.Nome
                };
                retorno.Add(cotacaoSelecionarVm);

                if (fornecedorParticipante.Cotacao == null)
                {
                    continue;
                }

                var cotacao = (CotacaoMaterial)fornecedorParticipante.Cotacao.CastEntity();

                cotacaoSelecionarVm.IdCotacao           = cotacao.Id;
                cotacaoSelecionarVm.CondicaoDePagamento = cotacao.CondicaoDePagamento.Descricao;
                cotacaoSelecionarVm.Incoterm            = cotacao.Incoterm.Descricao;

                var cotacaoItem = (CotacaoMaterialItem)cotacao.Itens.SingleOrDefault(x => x.ProcessoDeCotacaoItem.Id == idProcessoCotacaoItem);

                if (cotacaoItem == null)
                {
                    continue;
                }

                cotacaoSelecionarVm.QuantidadeAdquirida = cotacaoItem.QuantidadeAdquirida;
                cotacaoSelecionarVm.CodigoIva           = cotacaoItem.Iva != null ? cotacaoItem.Iva.Codigo : null;
                cotacaoSelecionarVm.Preco            = cotacaoItem.Preco;
                cotacaoSelecionarVm.ValorComImpostos = cotacaoItem.ValorComImpostos;
                cotacaoSelecionarVm.Custo            = cotacaoItem.Custo;
                cotacaoSelecionarVm.Selecionada      = cotacaoItem.Selecionada;

                Imposto imposto = cotacaoItem.Imposto(Enumeradores.TipoDeImposto.Icms);
                cotacaoSelecionarVm.ValorIcms = imposto != null ? imposto.Valor : (decimal?)null;

                imposto = cotacaoItem.Imposto(Enumeradores.TipoDeImposto.IcmsSubstituicao);
                cotacaoSelecionarVm.ValorIcmsSt = imposto != null ? imposto.Valor : (decimal?)null;

                imposto = cotacaoItem.Imposto(Enumeradores.TipoDeImposto.Ipi);
                cotacaoSelecionarVm.ValorIpi = imposto != null ? imposto.Valor : (decimal?)null;

                imposto = cotacaoItem.Imposto(Enumeradores.TipoDeImposto.PisCofins);
                cotacaoSelecionarVm.ValorPisCofins = imposto != null ? imposto.Valor : (decimal?)null;;
            }

            return(retorno);
        }
Beispiel #7
0
        //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 GerarEmail(ProcessoDeCotacao processoDeCotacao)
        {
            MensagemDeEmail mensagemDeEmail = _geradorDeMensagemDeEmail.AberturaDoProcessoDeCotacaoDeMaterial(processoDeCotacao);

            foreach (var fornecedorParticipante in processoDeCotacao.FornecedoresParticipantes)
            {
                if (string.IsNullOrEmpty(fornecedorParticipante.Fornecedor.Email))
                {
                    throw new UsuarioSemEmailException(fornecedorParticipante.Fornecedor.Nome);
                }
                _emailService.Enviar(fornecedorParticipante.Fornecedor.Email, mensagemDeEmail);
            }
        }
Beispiel #9
0
        public void QuandoAdicionaIteracaoDeUsuarioOcorrePersistencia()
        {
            ProcessoDeCotacao processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFrete();
            IList <FornecedorParticipante> fornecedoresParticipantes = new List <FornecedorParticipante>();

            fornecedoresParticipantes.Add(processoDeCotacao.AdicionarFornecedor(DefaultObjects.ObtemFornecedorPadrao()));
            fornecedoresParticipantes.Add(processoDeCotacao.AdicionarFornecedor(DefaultObjects.ObtemFornecedorPadrao()));

            _atualizadorDeIteracaoDoUsuario.Adicionar(fornecedoresParticipantes);

            _processoCotacaoIteracoesUsuarioMock.Verify(x => x.Save(It.IsAny <ProcessoCotacaoIteracaoUsuario>()), Times.Exactly(fornecedoresParticipantes.Count));
            CommonVerifications.VerificaCommitDeTransacao(_unitOfWorkMock);
        }
        public ApiResponseMessage EfetuarComunicacao(ProcessoDeCotacao processo)
        {
            //seleciona os participantes que preencheram a cotação (cotacaoMaterial != null)
            //e que ainda não possuem número da cotação. O esperado é que nenhuma das cotações possuem NumeroDaCotacao.
            //Isto acontecerá apenas se ocorrer erro na comunicação com o sap em para uns dos fornecedores do processo
            //e antes deste fornecedor, a comunicação tenha sido realizada com sucesso para outro fornecedor.
            //Neste cenário o fornecedor anterior já tem um número de cotação e não deve ser mais enviado para o SAP,
            //pois isto faria com que fosse criado duas cotações para o mesmo fornecedor e item de requisição, o que é errado.
            var participantesSemCotacaoNoSap = (from fp in processo.FornecedoresParticipantes
                                                let cotacaoMaterial = (CotacaoMaterial)fp.Cotacao.CastEntity()
                                                                      where string.IsNullOrEmpty(fp.NumeroDaCotacao)
                                                                      select fp);

            foreach (var fornecedorParticipante in participantesSemCotacaoNoSap)
            {
                var itens = new ListaProcessoDeCotacaoDeMaterialAberturaItemVm();
                itens.AddRange(from ProcessoDeCotacaoDeMaterialItem item in processo.Itens
                               select new ProcessoDeCotacaoDeMaterialAberturaItemVm
                {
                    NumeroRequisicao = item.RequisicaoDeCompra.Numero,
                    NumeroItem       = item.RequisicaoDeCompra.NumeroItem
                });

                var vm = new ProcessoDeCotacaoDeMaterialAberturaComunicacaoSapVm
                {
                    IdProcessoCotacao = processo.Id,
                    CodigoFornecedor  = fornecedorParticipante.Fornecedor.Codigo,
                    DataLimiteRetorno = processo.DataLimiteDeRetorno.Value.ToString("dd.MM.yyyy"),
                    Itens             = itens
                };

                //comentado enquanto o serviço do SAP não é implementado
                ApiResponseMessage resposta = _comunicacaoSap.EnviarMensagem("/HttpAdapter/HttpMessageServlet?senderParty=PORTAL&senderService=HTTP&interfaceNamespace=http://portal.bsbios.com.br/&interface=si_cadCotacaoAbertura_portal&qos=be", vm);
                if (resposta.Retorno.Codigo.Equals("200") && !string.IsNullOrEmpty(resposta.Retorno.Texto))
                {
                    fornecedorParticipante.AtualizarNumeroDaCotacao(resposta.Retorno.Texto);
                }
                else
                {
                    throw new Exception("Ocorreu um erro ao enviar os dados do Processo de Cotação para o SAP.");
                }
            }
            return(new ApiResponseMessage()
            {
                Retorno = new Retorno()
                {
                    Codigo = "200", Texto = "OK"
                }
            });
        }
        public void ConsigoPersistirUmProcessoDeCotacaoDeFreteEConsultarPosteriormente()
        {
            ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFrete();

            DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processo);

            UnitOfWorkNh.Session.Clear();

            var processosDeCotacao = ObjectFactory.GetInstance <IProcessosDeCotacao>();
            ProcessoDeCotacao processoConsultado = processosDeCotacao.BuscaPorId(processo.Id).Single();

            Assert.IsNotNull(processoConsultado);
            Assert.AreEqual(1, processoConsultado.Itens.Count);
        }
        public void GerarEmail(ProcessoDeCotacao processoDeCotacao)
        {
            foreach (var fornecedorParticipante in processoDeCotacao.FornecedoresParticipantes)
            {
                var cotacao = fornecedorParticipante.Cotacao;
                if (cotacao == null)
                {
                    continue;
                }
                MensagemDeEmail mensagemDeEmail = cotacao.Itens.Any(item => item.Selecionada) ?
                                                  _geradorDeMensagemDeEmail.FornecedoresSelecionadosNoProcessoDeCotacao(processoDeCotacao, cotacao) :
                                                  _geradorDeMensagemDeEmail.FornecedoresNaoSelecionadosNoProcessoDeCotacao(cotacao);

                _emailService.Enviar(fornecedorParticipante.Fornecedor.Email, mensagemDeEmail);
            }
        }
Beispiel #13
0
        public MensagemDeEmail AberturaDoProcessoDeCotacaoDeFrete(ProcessoDeCotacao processoDeCotacao)
        {
            ProcessoDeCotacaoItem item      = processoDeCotacao.Itens.First();
            var    processoDeCotacaoDeFrete = (ProcessoDeCotacaoDeFrete)processoDeCotacao;
            string mensagem = "Prezado Fornecedor. " + Environment.NewLine +
                              "A BSBIOS convida a participar do nosso processo de cotação para o Produto/Serviço " +
                              "conforme informações descritas abaixo. " + Environment.NewLine +
                              "Caso tenha interesse em participar favor acessar o Portal de Cotações (http://bsnet.bsbios.com/)." + Environment.NewLine + Environment.NewLine +
                              "Material: " + item.Produto.Descricao + Environment.NewLine +
                              "Quantidade: " + item.Quantidade + Environment.NewLine +
                              "Itinerário: " + processoDeCotacaoDeFrete.Itinerario.Descricao + Environment.NewLine +
                              "Unidade de Medida: " + item.UnidadeDeMedida.Descricao + Environment.NewLine +
                              "Data Limite de Retorno: " + (processoDeCotacaoDeFrete.DataLimiteDeRetorno.HasValue ? processoDeCotacaoDeFrete.DataLimiteDeRetorno.Value.ToShortDateString() : "") + Environment.NewLine +
                              "Requisitos: " + processoDeCotacaoDeFrete.Requisitos + Environment.NewLine;

            return(new MensagemDeEmail("Cotação de Frete", mensagem));
        }
        public void Executar(int idProcessoCotacao)
        {
            try
            {
                _unitOfWork.BeginTransaction();

                ProcessoDeCotacao processoDeCotacao = _processosDeCotacao.BuscaPorId(idProcessoCotacao).Single();
                processoDeCotacao.Fechar();
                _comunicacaoSap.EfetuarComunicacao(processoDeCotacao);
                _geradorDeEmail.GerarEmail(processoDeCotacao);
                _processosDeCotacao.Save(processoDeCotacao);

                _unitOfWork.Commit();
            }
            catch (Exception)
            {
                _unitOfWork.RollBack();
                throw;
            }
        }
Beispiel #15
0
 public void Executar(int idProcessoCotacao)
 {
     try
     {
         _unitOfWork.BeginTransaction();
         ProcessoDeCotacao processoDeCotacao = _processosDeCotacao.BuscaPorId(idProcessoCotacao).Single();
         Usuario           usuarioComprador  = _usuarios.UsuarioConectado();
         processoDeCotacao.Abrir(usuarioComprador);
         _comunicacaoSap.EfetuarComunicacao(processoDeCotacao);
         _gerenciadorUsuario.CriarSenhaParaUsuariosSemSenha(processoDeCotacao.FornecedoresParticipantes.Select(x => x.Fornecedor.Codigo).ToArray());
         _geradorDeEmailDeProcessoDeAberturaDeCotacao.GerarEmail(processoDeCotacao);
         _processosDeCotacao.Save(processoDeCotacao);
         _unitOfWork.Commit();
     }
     catch (Exception)
     {
         _unitOfWork.RollBack();
         throw;
     }
 }
Beispiel #16
0
        public MensagemDeEmail FornecedoresSelecionadosNoProcessoDeCotacao(ProcessoDeCotacao processoDeCotacao, Cotacao cotacao)
        {
            string mensagem = "Prezado Fornecedor." + Environment.NewLine +
                              "Estamos confirmando o fechamento da negociação referente ao Processo de Cotação " + processoDeCotacao.Id + "." + Environment.NewLine +
                              "Segue nosso Pedido de Compras." + Environment.NewLine + Environment.NewLine;

            IList <CotacaoItem> itensDaCotacao = cotacao.Itens.Where(item => item.Selecionada).ToList();

            for (int i = 0; i < itensDaCotacao.Count; i++)
            {
                var item = itensDaCotacao[i];
                mensagem +=
                    "Item " + Convert.ToString(i + 1) + Environment.NewLine +
                    "Material: " + item.ProcessoDeCotacaoItem.Produto.Descricao + Environment.NewLine +
                    "Quantidade: " + item.QuantidadeAdquirida + Environment.NewLine +
                    "Unidade de Medida: " + item.ProcessoDeCotacaoItem.UnidadeDeMedida.Descricao + Environment.NewLine +
                    SeparadorDeItems + Environment.NewLine;
            }
            mensagem += " Para maiores esclarecimentos, favor entrar em contato através com o comprador.";

            return(new MensagemDeEmail("Fechamento do Processo de Cotacão", mensagem));
        }
Beispiel #17
0
        public void QuandoOcorreErroAoAdicionarIteracaoDeUsuarioFazRollback()
        {
            _processoCotacaoIteracoesUsuarioMock.Setup(x => x.Save(It.IsAny <ProcessoCotacaoIteracaoUsuario>()))
            .Throws(new ExcecaoDeTeste("Erro"));

            IList <FornecedorParticipante> fornecedoresParticipantes = new List <FornecedorParticipante>();

            try
            {
                ProcessoDeCotacao processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFrete();
                fornecedoresParticipantes.Add(processoDeCotacao.AdicionarFornecedor(DefaultObjects.ObtemFornecedorPadrao()));
                fornecedoresParticipantes.Add(processoDeCotacao.AdicionarFornecedor(DefaultObjects.ObtemFornecedorPadrao()));

                _atualizadorDeIteracaoDoUsuario.Adicionar(fornecedoresParticipantes);

                Assert.Fail("Deveria ter gerado exceção.");
            }
            catch (ExcecaoDeTeste)
            {
                _processoCotacaoIteracoesUsuarioMock.Verify(x => x.Save(It.IsAny <ProcessoCotacaoIteracaoUsuario>()), Times.Once());
                CommonVerifications.VerificaRollBackDeTransacao(_unitOfWorkMock);
            }
        }
        public AtualizadorDeCotacaoTests()
        {
            _unitOfWorkMock         = CommonMocks.DefaultUnitOfWorkMock();
            _processoDeCotacao      = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialComCotacaoDoFornecedor();
            _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 id) =>
            {
                _unitOfWorkMock.Verify(x => x.BeginTransaction(), Times.Once());
                _unitOfWorkMock.Verify(x => x.Commit(), Times.Never());
            });
            _processosDeCotacaoMock.Setup(x => x.Single())
            .Returns(_processoDeCotacao);

            _incotermsMock = new Mock <IIncoterms>(MockBehavior.Strict);
            _incotermsMock.Setup(x => x.BuscaPeloCodigo(It.IsAny <string>()))
            .Returns(_incotermsMock.Object)
            .Callback((string codigo) =>
            {
                _unitOfWorkMock.Verify(x => x.BeginTransaction(), Times.Once());
                _unitOfWorkMock.Verify(x => x.Commit(), Times.Never());
                _incotermRetorno = Incoterm.Codigo == codigo ? Incoterm : null;
            });
            _incotermsMock.Setup(x => x.Single())
            .Returns(() => _incotermRetorno);

            _condicoesDePagamentoMock = new Mock <ICondicoesDePagamento>(MockBehavior.Strict);
            _condicoesDePagamentoMock.Setup(x => x.BuscaPeloCodigo(It.IsAny <string>()))
            .Returns((string codigo) => codigo == CondicaoDePagamento.Codigo ? CondicaoDePagamento : null)
            .Callback((string codigo) =>
            {
                _unitOfWorkMock.Verify(x => x.BeginTransaction(), Times.Once());
                _unitOfWorkMock.Verify(x => x.Commit(), Times.Never());
            });

            _atualizadorDeCotacao = new AtualizadorDeCotacaoDeMaterial(_unitOfWorkMock.Object, _processosDeCotacaoMock.Object, _incotermsMock.Object, _condicoesDePagamentoMock.Object);


            _cotacaoAtualizarVm = new CotacaoMaterialInformarVm()
            {
                IdProcessoCotacao       = _processoDeCotacao.Id,
                CodigoFornecedor        = _processoDeCotacao.FornecedoresParticipantes.First().Fornecedor.Codigo,
                CodigoCondicaoPagamento = CondicaoDePagamento.Codigo,
                CodigoIncoterm          = Incoterm.Codigo,
                DescricaoIncoterm       = "Desc Incoterm",
            };

            _cotacaoItemAtualizarVm = new CotacaoMaterialItemInformarVm
            {
                IdProcessoCotacao     = _processoDeCotacao.Id,
                IdCotacao             = 0,
                IdProcessoCotacaoItem = _processoDeCotacao.Itens.First().Id,
                Preco = 110,
                Mva   = 0,
                QuantidadeDisponivel = 150,
                Impostos             = new CotacaoImpostosVm
                {
                    IcmsAliquota      = 17,
                    IcmsValor         = 12,
                    IcmsStAliquota    = 0,
                    IcmsStValor       = 0,
                    IpiAliquota       = 5,
                    IpiValor          = 4,
                    PisCofinsAliquota = 3
                },
                ObservacoesDoFornecedor = "observações do fornecedor",
                PrazoDeEntrega          = DateTime.Today.AddDays(15).ToShortDateString()
            };
        }