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 })); } }
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() }; }