示例#1
0
        public Venda Salvar(long id,
                            long[] produtoId,
                            decimal[] quantidade,
                            DateTime dataVenda,
                            string cliente
                            )
        {
            Venda venda = null;

            if (id > 0)
            {
                venda = _vendaRepository.GetById(id);
            }
            else
            {
                venda = new Venda
                {
                    NomeCliente = cliente,
                    DataVenda   = DateTime.Now
                };
            }

            //Atualiza de acordo com o que foi digitado
            venda.Itens.Clear();
            for (int i = 0; i < produtoId.Count(); i++)
            {
                var prod = _produtoRepository.GetById(produtoId[i]);

                var item = new VendaItem()
                {
                    Venda      = venda,
                    Produto    = prod,
                    Quantidade = quantidade[i],
                    Total      = quantidade[i] * prod.Preco
                };
                var msg = string.Empty;
                //if (prod.QuantidadeEstoque < quantidade[i])
                if (!item.Verifica_Estoque_E_Qtd_Zerada(out msg))
                {
                    throw new InvalidOperationException(msg);
                }

                prod.Diminuir_Quantidade_Venda(quantidade[i]);

                venda.Itens.Add(item);
            }
            venda.Total = venda.Itens.Sum(x => x.Total);
            _vendaRepository.Save(venda);
            _vendaRepository.CommitTran();

            return(venda);
        }