Пример #1
0
 public JsonResult SalvarItem(CotacaoMaterialItemInformarVm cotacaoItemInformarVm, [ModelBinder(typeof(CotacaoImpostoModelBinder))] CotacaoImpostosVm cotacaoImpostosVm)
 {
     cotacaoItemInformarVm.Impostos = cotacaoImpostosVm;
     try
     {
         _atualizadorDeCotacao.AtualizarItemDaCotacao(cotacaoItemInformarVm);
         return(Json(new { Sucesso = true }));
     }
     catch (Exception ex)
     {
         return(Json(new { Sucesso = false, Mensagem = ex.Message }));
     }
 }
Пример #2
0
        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 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()
            };
        }