예제 #1
0
        public void AddPedidoComUmItem()
        {
            var pedidoService = new PedidoService(new PedidoRepositoryMok(),
                                                  new NotificationContext(),
                                                  new PedidoNotificationMessages());
            var pedidoItem = new PedidoItem();

            pedidoItem.Descricao     = "Item 4";
            pedidoItem.PedidoId      = 0;
            pedidoItem.PrecoUnitario = 12;
            pedidoItem.Quantidade    = 3;
            var pedido = new Pedido(0, 8547, new List <PedidoItem>()
            {
                pedidoItem
            });
            var result = pedidoService.AddAsync(pedido).Result;

            Assert.Equal(1, result.Id);
            Assert.Equal(1, pedido.PedidoItems.FirstOrDefault().Id);
        }
예제 #2
0
 public string Inserir(PedidoItem pedidoItem)
 {
     try
     {
         acessoDados.LimparParametros();
         acessoDados.AdicionarParametros("@IdPedido", pedidoItem.Pedido.IdPedido);
         acessoDados.AdicionarParametros("@IdProduto", pedidoItem.Produto.IdProduto);
         acessoDados.AdicionarParametros("@Quantidade", pedidoItem.Quantidade);
         acessoDados.AdicionarParametros("@ValorUnitario", pedidoItem.ValorUnitario);
         acessoDados.AdicionarParametros("@PercentualDesconto", pedidoItem.PercentualDesconto);
         acessoDados.AdicionarParametros("@ValorDesconto", pedidoItem.ValorDesconto);
         acessoDados.AdicionarParametros("@ValorTotal", pedidoItem.ValorTotal);
         string idProduto = acessoDados.ExecutarManipulacao(CommandType.StoredProcedure, "uspPedidoItemInserir").ToString();
         return(idProduto);
     }
     catch (Exception e)
     {
         return(e.Message);
     }
 }
예제 #3
0
        public void AtualizarItemPedido_PedidoComValorDiferente_DeveAtualizarValorTotal()
        {
            //Arrange
            var pedido      = Pedido.PedidoFactory.NovoPedidoRascunho(Guid.NewGuid());
            var itemId      = Guid.NewGuid();
            var itemPedido1 = new PedidoItem(Guid.NewGuid(), "Caderno", 2, 20);
            var itemPedido2 = new PedidoItem(itemId, "Mochila", 3, 50);

            pedido.AdicionarItem(itemPedido1);
            pedido.AdicionarItem(itemPedido2);
            var itemPedidoAtualizar = new PedidoItem(itemId, "Mochila", 3, 100);
            var novoValorTotal      = itemPedidoAtualizar.ValorUnitario * itemPedidoAtualizar.Quantidade +
                                      itemPedido1.ValorUnitario * itemPedido1.Quantidade;

            //Act
            pedido.AtualizarItem(itemPedidoAtualizar);

            //Assert
            Assert.Equal(novoValorTotal, pedido.ValorTotal);
        }
예제 #4
0
        private void ValidarCadastro(PedidoItem item)
        {
            if (item.idProduto <= 0)
            {
                _response.Status = Utils.Enums.StatusResponse.Warning;
                _response.ErrorMessage.Add("Produto Deve ser infromado.");
            }

            if (item.Quantidade <= 0)
            {
                _response.Status = Utils.Enums.StatusResponse.Warning;
                _response.ErrorMessage.Add("Quantidade informada é invalida.");
            }

            if (item.ValorUnitario <= 0)
            {
                _response.Status = Utils.Enums.StatusResponse.Warning;
                _response.ErrorMessage.Add("Valor unitário informada é invalida.");
            }
        }
예제 #5
0
        public async Task AdicionarItem_ItemExistenteAoPedidoRascunho_DeveExecutarComSucesso()
        {
            // Arrange
            var pedidoItemExistente = new PedidoItem(_produtoId, "Produto Xpto", 2, 100);

            _pedido.AdicionarItem(pedidoItemExistente);
            var pedidoCommand = new AdicionaItemPedidoCommand(_clienteId, _produtoId, "Produto Xpto", 2, 100);

            _mocker.GetMock <IPedidoRepository>().Setup(r => r.UnitOfWork.Commit()).Returns(Task.FromResult(true));
            _mocker.GetMock <IPedidoRepository>().Setup(r => r.ObterPedidoRascunhoPorCliente(_clienteId)).Returns(Task.FromResult(_pedido));

            // Act
            var result = await _pedidoHandle.Handle(pedidoCommand, CancellationToken.None);

            // Assert
            Assert.True(result);
            _mocker.GetMock <IPedidoRepository>().Verify(x => x.AtualizarItem(It.IsAny <PedidoItem>()), Times.Once);
            _mocker.GetMock <IPedidoRepository>().Verify(x => x.Atualizar(It.IsAny <Pedido>()), Times.Once);
            _mocker.GetMock <IPedidoRepository>().Verify(x => x.UnitOfWork.Commit(), Times.Once);
        }
예제 #6
0
        public void AtualizarItemPedido_PedidoComProdutosDiferentes_DeveAtualizarValorTotal()
        {
            // Arrange
            var produto1Id  = Guid.NewGuid();
            var pedidoItem1 = new PedidoItem(produto1Id, "Produto Teste", 2, 100);
            var pedidoItem2 = new PedidoItem(Guid.NewGuid(), "Produto Teste 2 ", 4, 100);

            _pedido.AdicionarItem(pedidoItem1);
            _pedido.AdicionarItem(pedidoItem2);

            var pedidoItem1Atualizado = new PedidoItem(produto1Id, "Produto Teste", 5, 100);

            var totalPedido = (pedidoItem2.Quantidade * pedidoItem2.ValorUnitario) + (pedidoItem1Atualizado.Quantidade * pedidoItem1Atualizado.ValorUnitario);

            //Act
            _pedido.AtualizarItem(pedidoItem1Atualizado);

            // Act - Aseert
            Assert.Equal(totalPedido, _pedido.ValorTotal);
        }
예제 #7
0
        public void Atualizar_AtualizarQuantidadeItems_DeveAtualizarQuantidadeItems()
        {
            //Arrange
            var produtoId  = Guid.NewGuid();
            var pedido     = Pedido.PedidoFactory.NovoPedidoRascunho(Guid.NewGuid());
            var pedidoItem = new PedidoItem(produtoId, "Serra", 1, 100);

            pedido.AdicionarPedido(pedidoItem);
            var pedidoItemAtualizado = new PedidoItem(produtoId, "Serra", 2, 100);

            pedido.AdicionarPedido(pedidoItemAtualizado);
            var novaQuantidade = pedidoItemAtualizado.Quantidade;

            //Act
            pedido.AtualizarItem(pedidoItemAtualizado);
            //Assert
            Assert.Equal(novaQuantidade, pedido.PedidoItems.
                         FirstOrDefault(i => i.ProdutoId == produtoId)
                         .Quantidade);
        }
예제 #8
0
        public void TesteRealizaICMSQuandoEstadosDiferentesECfopDiferenteDe6009()
        {
            NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
            PedidoItem     pedidoItem     = new PedidoItem();
            Pedido         pedido         = new Pedido();

            pedido.EstadoOrigem  = "SP";
            pedido.EstadoDestino = "MG";

            pedidoItem.ValorItemPedido = 1000.00;

            notaFiscalItem.Cfop = CFOP.Realiza("SP", "MG");

            ICMS.Calcula(pedidoItem, pedido, notaFiscalItem);

            Assert.Equal("10", notaFiscalItem.TipoIcms);
            Assert.Equal(0.17, notaFiscalItem.AliquotaIcms);
            Assert.Equal(1000.00, notaFiscalItem.BaseIcms);
            Assert.Equal(170, notaFiscalItem.ValorIcms);
        }
예제 #9
0
        public void AdicionarItemPedido_ItemExistente_DeveIncrementarUnidadesSomarValores()
        {
            // Arrange
            var pedido    = Pedido.PedidoFactory.NovoPedidoRascunho(Guid.NewGuid());
            var produtoId = Guid.NewGuid();

            var pedidoItem = new PedidoItem(produtoId, "Produto Teste", 2, 100);

            pedido.AdicionarItem(pedidoItem);

            var pedidoItem2 = new PedidoItem(produtoId, "Produto Teste", 1, 100);

            // Act
            pedido.AdicionarItem(pedidoItem2);

            // Assert
            Assert.Equal(300, pedido.ValorTotal);
            Assert.Equal(1, pedido.PedidoItems.Count);
            Assert.Equal(3, pedido.PedidoItems.FirstOrDefault(p => p.ProdutoId == produtoId).Quantidade);
        }
예제 #10
0
        public void AtualizarItemPedido_PedidoComProdutosDiferentes_DeveAtualizarValorTotal()
        {
            // Arrange
            var pedido               = Pedido.PedidoFactory.NovoPedidoRascunho(Guid.NewGuid());
            var produtoId            = Guid.NewGuid();
            var pedidoItemExistente1 = new PedidoItem(Guid.NewGuid(), "Produto Teste", 2, 100);
            var pedidoItemExistente2 = new PedidoItem(produtoId, "Produto Teste", 3, 15);

            pedido.AdicionarItem(pedidoItemExistente1);
            pedido.AdicionarItem(pedidoItemExistente2);

            var pedidoItemAtualizado = new PedidoItem(produtoId, "Produto Teste", 5, 100);
            var totalPedido          = (pedidoItemExistente1.Quantidade * pedidoItemExistente1.ValorUnitario) + (pedidoItemAtualizado.Quantidade * pedidoItemAtualizado.ValorUnitario);

            // Act
            pedido.AtualizarItem(pedidoItemAtualizado);

            // Assert
            Assert.Equal(totalPedido, pedido.ValorTotal);
        }
        public async Task <bool> Handle(AdicionarItemPedidoCommand message, CancellationToken cancellationToken)
        {
            if (!ValidarComando(message))
            {
                return(false);
            }

            var pedido = await _pedidoRepository.ObterPedidoRascunhoPorClienteId(message.ClienteId);

            var pedidoItem = new PedidoItem(message.ProdutoId, message.Nome, message.Quantidade, message.ValorUnitario);

            if (pedido == null)
            {
                pedido = Pedido.PedidoFactory.NovoPedidoRascunho(message.ClienteId);
                pedido.AdicionarItem(pedidoItem);

                _pedidoRepository.Adicionar(pedido);

                pedido.AdicionarEvento(new PedidoRascunhoIniciadoEvent(pedido.ClienteId, pedido.Id));
            }
            else
            {
                var pedidoItemExistente = pedido.PedidoItemExistente(pedidoItem);
                pedido.AdicionarItem(pedidoItem);

                if (pedidoItemExistente)
                {
                    _pedidoRepository.AtualizarItem(pedido.PedidoItens.FirstOrDefault(p => p.ProdutoId == pedidoItem.ProdutoId));
                }
                else
                {
                    _pedidoRepository.AdicionarItem(pedidoItem);
                }

                _pedidoRepository.Atualizar(pedido);
            }

            pedido.AdicionarEvento(new PedidoItemAdicionadoEvent(pedido.ClienteId, pedido.Id, message.ProdutoId, message.Nome, message.ValorUnitario, message.Quantidade));

            return(await _pedidoRepository.UnitOfWork.Commit());
        }
예제 #12
0
        private void btnAdd_Click(object sender, System.EventArgs e)
        {
            try
            {
                if (CheckDuplicates())
                {
                    int quantity = Convert.ToInt32(txtQuantity.Text);
                    _lineValue = _item.PrecoVenda * quantity;
                    txtNoDiscountValue.Text = SumValue(_item.PrecoVenda);

                    _order = new Pedido(_company, _company.Id, dtpOrder.Value, dtpDelivery.Value, Convert.ToDecimal(txtNoDiscountValue.Text), _orderItems);

                    _orderItem = new PedidoItem(_item.Id, quantity, _lineValue, _item, _order.Id);
                    _orderItems.Add(_orderItem);

                    if (txtDescription.Text != String.Empty)
                    {
                        dgvItemList.Rows.Add(_item.Id, _item.Descricao, quantity, _lineValue);
                        btnRemove.Enabled    = true;
                        btnCancel.Enabled    = true;
                        btnMakeOrder.Enabled = true;
                        btnAdd.Enabled       = false;
                    }
                    else
                    {
                        throw new Exception("Quantidade de itens deve ser maior que 0");
                    }
                }
                else
                {
                    throw new Exception("Este item já foi adicionado.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,
                                "Erro inesperado",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }
예제 #13
0
        public string Inserir(PedidoItem pedidoItem)
        {
            try
            {
                acessoDadosSqlServer.LimparParametros();
                acessoDadosSqlServer.AdicionarParametros("@IdPedido", pedidoItem.Pedido.IdPedido);
                acessoDadosSqlServer.AdicionarParametros("@IdProduto", pedidoItem.Produto.IdProduto);
                acessoDadosSqlServer.AdicionarParametros("@QtdProduto", pedidoItem.QtdProduto);
                acessoDadosSqlServer.AdicionarParametros("@ValorUn", pedidoItem.ValorUn);
                acessoDadosSqlServer.AdicionarParametros("@PorcentualDesconto", pedidoItem.PorcentualDesconto);
                acessoDadosSqlServer.AdicionarParametros("@ValorDesconto", pedidoItem.ValorDesconto);
                acessoDadosSqlServer.AdicionarParametros("@ValorTotal", pedidoItem.ValorTotal);
                string idProduto = acessoDadosSqlServer.ExecutarManipulacao(CommandType.StoredProcedure, "uspPedidoItemInserir").ToString();

                return(idProduto);
            }
            catch (Exception exception)
            {
                return(exception.Message);
            }
        }
예제 #14
0
        public void DeveFazerAlgumaCoisa()
        {
            // Arrange
            var pedido     = new Pedido(Guid.NewGuid());
            var produtoId  = Guid.NewGuid();
            var pedidoItem = new PedidoItem(produtoId, "teste", 3, 100);

            pedido.AdicionarItem(pedidoItem);
            var pedidoAtualizado = new PedidoItem(produtoId, "teste", 2, 100);


            // Act
            pedido.AtualizarItem(pedidoAtualizado);

            // Assert
            pedido.Itens.First(x => x.ProdutoId == produtoId)
            .Quantidade
            .Should()
            .Be(pedidoAtualizado.Quantidade,
                "deve atualizar o item baseado no novo item passado");
        }
예제 #15
0
        public void AdicionarItemPedido_ItemExistente_DeveIncrementarItem()
        {
            //arrange
            var produtoId = Guid.NewGuid();
            var pedido    = new Pedido();

            var pedidoItem = new PedidoItem(produtoId, "Produto teste", 2, 150);

            pedido.AdicionarItem(pedidoItem);

            var pedidoItem2 = new PedidoItem(produtoId, "Produto teste 2", 2, 150);

            //act
            pedido.AdicionarItem(pedidoItem2);


            //assert
            Assert.Equal(600, pedido.ValorTotal);
            Assert.Equal(1, pedido.PedidoItems.Count);
            Assert.Equal(600, pedido.PedidoItems.First().ValorUnitario *pedido.PedidoItems.First().Quantidade);
        }
        public void AplicarVoucher_VoucherTipoValorDesconto_DeveDescontarDoValorTotal()
        {
            // Arrange
            var pedido      = Pedido.PedidoFactory.NovoPedidoRascunho(Guid.NewGuid());
            var pedidoItem1 = new PedidoItem(Guid.NewGuid(), "Produto Xpto", 2, 100);
            var pedidoItem2 = new PedidoItem(Guid.NewGuid(), "Produto Teste", 3, 15);

            pedido.AdicionarItem(pedidoItem1);
            pedido.AdicionarItem(pedidoItem2);

            var voucher = new Voucher("PROMO-15-REAIS", null, 15, 1,
                                      TipoDescontoVoucher.Valor, DateTime.Now.AddDays(15), true, false);

            var valorComDesconto = pedido.ValorTotal - voucher.ValorDesconto;

            // Act
            pedido.AplicarVoucher(voucher);

            // Assert
            Assert.Equal(valorComDesconto, pedido.ValorTotal);
        }
예제 #17
0
        public async Task AdicionarPedido_ClienteCadastrado_DeveAdicionarComSucesso()
        {
            //Arrange
            var listPedidoItens = new List <PedidoItem>();
            var clienteId       = 1;
            var prod4Valor      = await _repositoryProduto.FindById(4);

            var pedidoItem = new PedidoItem(0, 1, false, 0, prod4Valor.Valor);

            listPedidoItens.Add(pedidoItem);
            var pedido = new Domain.Entities.AgregacaoPedido.Pedido(clienteId, 0, listPedidoItens);



            //Act
            var result = await _repository.SaveAsync(pedido);


            //Assert
            Assert.True(result.Id > 0);
        }
예제 #18
0
        private ICollection <PedidoItem> ObterPedidoItemSet(PedidoDTO pedidoDto)
        {
            var pedidoItemSet = new List <PedidoItem>();

            foreach (var itemPedidoDto in pedidoDto.ItensPedido)
            {
                var produtoFornecedor = ObterProdutoFornecedor(itemPedidoDto);
                var itemPedido        = new PedidoItem
                {
                    DataCriacao      = DateTime.Now,
                    CodigoFornecedor = produtoFornecedor.CodigoFornecedor,
                    CodigoProduto    = produtoFornecedor.CodigoProduto,
                    Quantidade       = itemPedidoDto.Quantidade,
                    PrecoCliente     = produtoFornecedor.PrecoVenda,
                    PrecoFornecedor  = produtoFornecedor.PrecoFornecedor
                };
                pedidoItemSet.Add(itemPedido);
            }

            return(pedidoItemSet);
        }
예제 #19
0
        public void TesteRealizaICMSQuandoCFOPIgualA6009ComBrindOuMesmoEstado()
        {
            NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
            PedidoItem     pedidoItem     = new PedidoItem();
            Pedido         pedido         = new Pedido();

            pedido.EstadoOrigem  = "MG";
            pedido.EstadoDestino = "SP";

            pedidoItem.ValorItemPedido = 1000.00;
            pedidoItem.Brinde          = true;

            notaFiscalItem.Cfop = CFOP.Realiza("MG", "SP");

            ICMS.Calcula(pedidoItem, pedido, notaFiscalItem);

            Assert.Equal("60", notaFiscalItem.TipoIcms);
            Assert.Equal(0.18, notaFiscalItem.AliquotaIcms);
            Assert.Equal(900, notaFiscalItem.BaseIcms);
            Assert.Equal(162, notaFiscalItem.ValorIcms);
        }
예제 #20
0
        public void AdicionarItemNoCarrinhoCompra(int produtoId, int quantidade)
        {
            Produto    produto    = UnitOfWork.ProdutoRepository.GetById(produtoId);
            PedidoItem pedidoItem = new PedidoItem(Pedido.PedidoId, Pedido, produtoId, produto, quantidade);

            if (pedidoItem != null)
            {
                if (produto.QuantidadeEmEstoque > quantidade)
                {
                    Pedido.AdicionarItem(pedidoItem);
                }
                else
                {
                    throw new Exception("O número de produto é menor que o estoque");
                }
            }
            else
            {
                throw new Exception("Não foi possível inserir item no carrinho!");
            }
        }
예제 #21
0
        public void Add(string discos)
        {
            Pedido        pedido    = new Pedido();
            List <string> lstDiscos = discos.Split(';').ToList();

            List <PedidoItem> lstPedidoItem = new List <PedidoItem>();

            Db.Set <Pedido>().Add(pedido);
            Db.SaveChanges();
            int idPedido = pedido.Id;

            double t  = 0;
            double tc = 0;

            foreach (string id in lstDiscos)
            {
                Disco      di         = Db.Set <Disco>().Find(id);
                PedidoItem pedidoItem = new PedidoItem();

                pedidoItem.Valor    = CashBack.Preco(di.Genero);
                pedidoItem.CashBack = CashBack.Calcular(di.Genero);
                pedidoItem.IdDisco  = di.Id;
                pedidoItem.IdPedido = idPedido;

                t  += di.Preco;
                tc += pedidoItem.CashBack;
                lstPedidoItem.Add(pedidoItem);
            }

            pedido.Total         = t;
            pedido.TotalCashBack = tc;
            pedido.DataPedido    = DateTime.Now;

            Db.Entry(pedido).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
            Db.SaveChanges();


            Db.Set <PedidoItem>().AddRange(lstPedidoItem);
            Db.SaveChanges();
        }
        private PedidoItem CarregarItem(DataRow item)
        {
            VMDataRow  dtRow      = new VMDataRow(item);
            PedidoItem pedidoItem = new PedidoItem();

            pedidoItem.Produto = new Produto
            {
                IDProduto        = dtRow.GetInt("IDProduto"),
                Descricao        = dtRow.GetStr("Descricao"),
                Ativo            = dtRow.GetBoo("Ativo"),
                Cubagem          = dtRow.GetDec("Cubagem"),
                Altura           = dtRow.GetDec("Altura"),
                Profundidade     = dtRow.GetDec("Profudidade"),
                QuantidadeMinina = dtRow.GetDec("QuanitadeMinima"),
                Largura          = dtRow.GetDec("Largura"),
                Preco            = dtRow.GetDec("Preco")
            };

            pedidoItem.Quantidade = dtRow.GetDec("Quantidade");

            return(pedidoItem);
        }
        public void AplicarVoucher_DescontoExcedeValorTotalPedido_PedidoDeveTerValorZero()
        {
            //Arrange
            var pedido = Pedido.PedidoFactory.NovoPedidoRascunho(Guid.NewGuid());

            var pedidoItemExistente1 = new PedidoItem(Guid.NewGuid(), "Produto XPTO", 2, 100);
            var pedidoItemExistente2 = new PedidoItem(Guid.NewGuid(), "Produto Teste", 3, 15);

            pedido.AdicionarItem(pedidoItemExistente1);
            pedido.AdicionarItem(pedidoItemExistente2);

            var voucher = new Voucher("PROMO-15-REAIS", null, 300, 1,
                                      TipoDescontoVoucher.Valor, DateTime.Now.AddDays(15), true, false);



            //Act
            pedido.AplicarVoucher(voucher);

            //Assert
            Assert.Equal(0, pedido.ValorTotal);
        }
예제 #24
0
        private void FormulaDesconto(string total, int idItem)
        {
            _mPedido      = _mPedido.Query().Where("id", idPedido).FirstOrDefault <Model.Pedido>();
            _mPedidoItens = _mPedidoItens.Query().Where("id", idItem).First <PedidoItem>();

            //decimal argument = (decimal)_mPedido.Total;
            //int qtdDecimal = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2];
            var qtdDecimall = Validation.GetNumberOfDigits((decimal)_mPedido.Total);
            var qtdD        = qtdDecimall + 1;

            qtdD = 2;

            var soma1 = Validation.Round(_mPedidoItens.Total * 100 / _mPedido.Total, qtdD);
            var soma2 = Validation.Round(soma1 / 100, qtdD);

            if (soma2 == 0)
            {
                soma2 = Validation.Round(soma1 / 100, 3);
            }

            if (soma2 == 0)
            {
                soma2 = Validation.Round(soma1 / 100, 4);
            }

            if (soma2 == 0)
            {
                soma2 = Validation.Round(soma1 / 100, 5);
            }

            var soma3 = Validation.Round(Validation.ConvertToDouble(total) * soma2, qtdD);

            _mPedidoItens.Id             = idItem;
            _mPedidoItens.Tipo           = "Produtos";
            _mPedidoItens.DescontoPedido = Validation.ConvertToDouble(soma3);
            _mPedidoItens.SomarDescontoTotal();
            _mPedidoItens.SomarTotal();
            _mPedidoItens.Save(_mPedidoItens);
        }
예제 #25
0
        public void Editar(PedidoItem item)
        {
            try
            {
                PedidoItem itemTemp = BuscarPorID(item.Id);

                if (item == null)
                {
                    throw new Exception("Produto não encontrado.");
                }

                itemTemp.Quantidade = item.Quantidade;

                _ctx.PedidoItens.Update(itemTemp);

                _ctx.SaveChanges();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
예제 #26
0
        public void Save(PedidoItem entidade)
        {
            try
            {
                if (entidade.id > 0)
                {
                    Database.GetConnection().Update(entidade);
                }
                else
                {
                    Database.GetConnection().Insert(entidade);
                }

                var pedidorepo = new PedidoRepository();
                var pedido     = pedidorepo.Get(entidade.id_pedido);
                pedidorepo.Save(pedido); //atualizar o total do item...
            }
            catch (Exception e)
            {
                Mensage = $"Falha ao Inserir a entidade {entidade.GetType()}. Erro: {e.Message}";
            }
        }
예제 #27
0
        public string Inserir(PedidoItem pedidoItem)
        {
            try
            {
                acessoDados.limparParametros();
                acessoDados.addParametros("@idPedido_PI", pedidoItem.Pedido.idPedido);
                acessoDados.addParametros("@idItem_PI", pedidoItem.Item.idItem);
                acessoDados.addParametros("@quantidade_PI", pedidoItem.Quantidade);
                acessoDados.addParametros("@valorUnitario_PI", pedidoItem.valorUnitario);
                acessoDados.addParametros("@percentualDesconto_PI", pedidoItem.percentualDesconto);
                acessoDados.addParametros("@valorDesconto_PI", pedidoItem.valorUnitario);
                acessoDados.addParametros("@valorTotal_PI", pedidoItem.valorTotal);

                string idItem = acessoDados.executarAlteracao(CommandType.StoredProcedure, "InserirItemPedido").ToString();

                return(idItem);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
        public async Task <IActionResult> Create([Bind("Id,Data,UsuarioId")] Pedido pedido)
        {
            if (ModelState.IsValid)
            {
                _context.Add(pedido);
                await _context.SaveChangesAsync();

                foreach (var pi in listaDeProdutos)
                {
                    var pedidoItem = new PedidoItem {
                        PedidoId = pedido.Id, ProdutoId = pi.Id
                    };
                    _context.PedidosItens.Add(pedidoItem);
                    _context.SaveChanges();
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["UsuarioId"] = new SelectList(_context.Usuarios, "Id", "Id", pedido.UsuarioId);


            return(View(pedido));
        }
예제 #29
0
        public void DeveFazerCalcularCorrentamenteDoisItensUmAtualizado()
        {
            // Arrange
            var pedido   = new Pedido(Guid.NewGuid());
            var pedidoId = Guid.NewGuid();

            var teclado = new PedidoItem(Guid.NewGuid(), "Teclado Adamantium RGB", 1, 400);
            var mouse   = new PedidoItem(pedidoId, "Mouse Adamantium RGB", 1, 100);

            pedido.AdicionarItem(teclado);
            pedido.AdicionarItem(mouse);

            var mouseAtualizado = new PedidoItem(pedidoId, "Mouse Adamantium RGB", 2, 100);
            var total           = teclado.SubTotal + mouseAtualizado.SubTotal;

            // Act
            pedido.AtualizarItem(mouseAtualizado);

            // Assert
            total.Should()
            .Be(pedido.ValorTotal);
        }
        private void BtnSalvarOutroPedItem_Click(object sender, EventArgs e)
        {
            if (!ValidateViews())
            {
                return;
            }
            try
            {
                Save();
                ped_item = null;

                Toast.MakeText(this, $"Item {txtIdProduto.Text} adicionado ao pedido com sucesso!", ToastLength.Long).Show();
                Intent intent = new Intent();
                SetResult(Result.Ok, intent);
            }
            catch (Exception ex)
            {
                Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
            }

            Clean();
        }
        public ActionResult finalizarPedido()
        {
            try
            {
                var sessaoCarrinho = Session["carrinho"] as SessionCarrinho;
                var sessaoPessoa = Session["autenticacao"] as SessionAutenticacaoClient;

                Pessoa pessoa = null;

                if (sessaoPessoa.AutenticacaoTipo == Utils.AutenticacaoTipo.Facebook)
                {
                    pessoa = context.Pessoa.Where(x => x.FacebookId == sessaoPessoa.Id.ToString()).FirstOrDefault();

                }
                else if (sessaoPessoa.AutenticacaoTipo == Utils.AutenticacaoTipo.Google)
                {
                    pessoa = context.Pessoa.Where(x => x.GoogleId == sessaoPessoa.Id.ToString()).FirstOrDefault();

                }
                else if (sessaoPessoa.AutenticacaoTipo == Utils.AutenticacaoTipo.Sistema)
                {
                    pessoa = context.Pessoa.Find(Int32.Parse(sessaoPessoa.Id));

                }

                db.Entry(pessoa).State = System.Data.Entity.EntityState.Modified;

                pessoa.EmailAutenticacao = pessoa.Email;
                pessoa.ConfirmarSenha = pessoa.Senha;

                var endereco = db.PessoaEndereco.Where(x => x.Id == sessaoCarrinho.Endereco.Id).FirstOrDefault();
                
                var pedido = new Pedido();
                pedido.PessoaEndereco = endereco;
                pedido.Pessoa = pessoa;
                pedido.Data = DateTime.Now;
                pedido.Status = PedidoStatusEnum.WaitingPayment;
                pedido.Valor = sessaoCarrinho.TotalGeral;
                pedido.Frete = sessaoCarrinho.Frete;
                pedido.isNovo = true;
                
                db.Pedido.Add(pedido);
                db.SaveChanges();

                var pedidoItems = new List<PedidoItem>();

                foreach (var sessionCar in sessaoCarrinho.ProdutosCarrinho) {
                    var pedidoItem = new PedidoItem();
                    pedidoItem.Produto = db.Produto.Where(x => x.Id == sessionCar.Produto.Id).FirstOrDefault();
                    pedidoItem.Produto.Imagens = db.ProdutoImagem.Where(x => x.cProduto == sessionCar.Produto.Id).ToList();
                    pedidoItem.Pedido = pedido;
                    pedidoItem.Quantidade = sessionCar.Quantidade;

                    pedidoItems.Add(pedidoItem);

                    db.PedidoItem.Add(pedidoItem);
                    db.SaveChanges();
                }

                ViewBag.Menus = db.Menu.ToList();
                ViewBag.Pedido = pedido;
                ViewBag.pedidoItens = pedidoItems;

                return View("PedidoConcluido");

            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                        .SelectMany(x => x.ValidationErrors)
                        .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);

                // Combine the original exception message with the new one.
                var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

                // Throw a new DbEntityValidationException with the improved exception message.
                throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
            }
        }