Esempio n. 1
0
        // Insere uma entrada + itens
        public Response InsertEntrada(EntradaProduto entrada)
        {
            Response response = Validate(entrada);

            if (response.Success)
            {
                entrada.DataEntrada = DateTime.Now;
                entrada.Valor       = entrada.Itens.Sum(w => w.Valor * w.Quantidade);
                SingleResponse <EntradaProduto> responseEntrada = entradaProdutoDAL.InsertEntrada(entrada);
                using (TransactionScope scope = new TransactionScope())
                {
                    if (responseEntrada.Success)
                    {
                        foreach (ItensEntrada item in entrada.Itens)
                        {
                            SingleResponse <EntradaProduto> responseEntradaID = entradaProdutoDAL.GetEntradaID(entrada);
                            item.EntradaID = responseEntradaID.Data.ID;

                            ItensEntradaBLL itensEntradaBLL      = new ItensEntradaBLL();
                            Response        responseItensEntrada = itensEntradaBLL.InsertItem(item);

                            if (responseItensEntrada.Success)
                            {
                                produtoDAL.AtualizaPreco(item.ProdutoID, item.Valor, item.Quantidade);
                                produtoDAL.AtualizaEstoqueEntrada(item.ProdutoID, item.Quantidade);
                            }
                        }
                        entrada.Itens.Clear();
                    }
                    scope.Complete();
                }
                return(responseEntrada);
            }
            return(response);
        }