예제 #1
0
        static void Main(string[] args)
        {
            Console.Write("Nome: ");
            string nome = Console.ReadLine();

            Console.Write("Telefone: ");
            string fone = Console.ReadLine();

            Console.Write("E-mail: ");
            string email = Console.ReadLine();


            Cliente cliente = new Cliente(nome, fone, email);

            Console.Write("Movimentação (1 LOCAÇÃO - 2 DEVOLUÇÃO): ");
            int tipPedido = int.Parse(Console.ReadLine());



            if (tipPedido == 1)
            {
                Console.Write("Status Locacao ou Devolucao: ");
                StatusMovimentacao status = Enum.Parse <StatusMovimentacao>(Console.ReadLine());
                Console.Write("Quantidade de itens no lançamento:");
                int qt_lan = int.Parse(Console.ReadLine());

                Movimentacao movLocacao = new MovimentacaoLocacao(DateTime.Now, status, cliente);

                for (int i = 1; i <= qt_lan; i++)
                {
                    Console.Write($"Item {i} - ");
                    Console.Write("Nome Produto: ");
                    string descricao = Console.ReadLine();
                    Console.Write("Valor do Produto: ");
                    double valor_produto = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
                    Console.Write("Quantidade: ");
                    int qt_produto = int.Parse(Console.ReadLine());
                    Console.WriteLine("Escolha o status  " + "Dvd ou " + " Livro");
                    StatusProduto       statusProduto           = Enum.Parse <StatusProduto>(Console.ReadLine());
                    Produto             produto                 = new Produto(descricao, valor_produto, statusProduto);
                    MovimentacaoItem    movimentacaoItemLocacao = new MovimentacaoItem(qt_produto, valor_produto, produto);
                    MovimentacaoLocacao mov = (MovimentacaoLocacao)movLocacao;
                    mov.AddMovimentacao(movimentacaoItemLocacao);
                }
                Console.WriteLine(movLocacao);
            }
            else if (tipPedido == 2)
            {
                Console.Write("Multa Devolução: ");
                double valor_multa = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
                Console.Write("Status - Devolvido : ");
                StatusMovimentacao status       = Enum.Parse <StatusMovimentacao>(Console.ReadLine());
                Movimentacao       movDevolucao = new MovimentacaoDevolucao(DateTime.Now, status, cliente, valor_multa);
                Console.WriteLine("boa noite");
            }
        }
        public async Task MovimentarEstoqueVenda(Venda venda, StatusMovimentacao status, TipoMovimentacao tipo)
        {
            List <MovimentacaoEstoque> movimentacoes = new List <MovimentacaoEstoque>();

            foreach (var item in await _context.ItemsVenda.AsQueryable().Where(x => x.VendaId == venda.Id).ToListAsync())
            {
                movimentacoes.Add(new MovimentacaoEstoque()
                {
                    DataMovimentacao  = DateTime.Now,
                    MovUsuarioID      = venda.usuarioVendaID,
                    ProdutoMovId      = item.ProdutoId,
                    Quantidade        = item.Quantidade,
                    TipoMovimentacao  = tipo,
                    StatusMovimetacao = status,
                    VendaMovID        = venda.Id
                });
                await AtualizarEstoque(item, status);
            }
            _context.MovimentacoesEstoque.AddRange(movimentacoes);
            await _context.SaveChangesAsync();
        }
        private async Task AtualizarEstoque(ItemVenda itemVenda, StatusMovimentacao status)
        {
            var produto = await _context.Estoques.Where(x => x.ProdutoEstoqueId == itemVenda.ProdutoId).FirstOrDefaultAsync();

            produto.Disponivel = (status == StatusMovimentacao.ENTRADA) ? produto.Disponivel + itemVenda.Quantidade : produto.Disponivel - itemVenda.Quantidade;
        }
예제 #4
0
 public MovimentacaoDevolucao(DateTime momento, StatusMovimentacao status, Cliente cliente, double multa)
     : base(momento, status, cliente)
 {
     Multa = multa;
 }
예제 #5
0
 public MovimentacaoLocacao(DateTime momento, StatusMovimentacao status, Cliente cliente)
     : base(momento, status, cliente)
 {
 }
예제 #6
0
 protected Movimentacao(DateTime momento, StatusMovimentacao status, Cliente cliente)
 {
     Momento = momento;
     Status  = status;
     Cliente = cliente;
 }