public IEstoqueEntity Bind(DataRow source)
            {
                IEstoqueEntity item = new EstoqueEntity();

                item.IdItem              = Convert.ToInt32(source["IdItem"]);
                item.QuantidadeTotal     = Convert.ToInt32(source["QuantidadeTotal"]);
                item.QuantidadeUtilizada = Convert.ToInt32(source["QuantidadeUtilizada"]);
                item.IdEstoque           = Convert.ToInt32(source["IdEstoque"]);

                return(item);
            }
        private void btnSalvarSaida_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Deseja realmente criar um novo registro?",
                                                  "Confirma a criação ", MessageBoxButtons.YesNo,
                                                  MessageBoxIcon.Question);

            if (result == DialogResult.Yes)
            {
                MovimentoSaidaEntity             saida = new MovimentoSaidaEntity();
                IList <MovimentoSaidaItemEntity> itens = new List <MovimentoSaidaItemEntity>();

                saida.IdCliente     = 1;
                saida.DataMovimento = DateTime.Now;

                saida.IdUsuario = Properties.Settings.Default.IdUsuarioLogado;

                foreach (DataGridViewRow row in dtgridItensSelecionados.Rows)
                {
                    if (row.Cells["CodigoItem"].Value != null && row.Cells["CodigoItem"].Value.ToString() != "")
                    {
                        if (row.Cells["Quantidade"].Value == null)
                        {
                            MessageBox.Show("Preencha a quantidade para o item " + row.Cells["CodigoItem"].Value + " - " + row.Cells["Nome"].Value, "Campo Inválido");
                            return;
                        }

                        IEstoqueEntity estoque = EstoqueDao.ConsultarPorCodigoItem(Convert.ToInt32(row.Cells["CodigoItem"].Value));

                        if (Convert.ToInt32(row.Cells["Quantidade"].Value) > estoque.QuantidadeDisponivel)
                        {
                            MessageBox.Show("A quantidade disponivel para o item " + row.Cells["CodigoItem"].Value + row.Cells["Nome"].Value + " é de " + estoque.QuantidadeDisponivel);
                            return;
                        }

                        IItemEntity item = ItemDao.ConsultarPorCodigo(Convert.ToInt32(row.Cells["CodigoItem"].Value));
                        MovimentoSaidaItemEntity saidaItem = new MovimentoSaidaItemEntity();

                        saidaItem.IdItem     = item.IdItem;
                        saidaItem.IdDeposito = Convert.ToInt32(row.Cells["Deposito"].Value);
                        saidaItem.QtdTotal   = Convert.ToInt32(row.Cells["Quantidade"].Value);

                        itens.Add(saidaItem);
                    }
                }

                saida.IdMovimentoSaida = MovimentoSaidaDao.Inserir(saida);

                foreach (var saidaItem in itens)
                {
                    saidaItem.IdMovimentoSaida = saida.IdMovimentoSaida;

                    MovimentoSaidaItemEntity movimento = new MovimentoSaidaItemEntity
                    {
                        IdMovimentoSaida = saidaItem.IdMovimentoSaida,
                        IdItem           = saidaItem.IdItem,
                        IdDeposito       = saidaItem.IdDeposito,
                        QtdTotal         = saidaItem.QtdTotal
                    };
                    MovimentoSaidaItemDao.Inserir(movimento);

                    IEstoqueEntity estoqueItem = EstoqueDao.ConsultarPorCodigoItem(saidaItem.IdItem);

                    EstoqueEntity estoque = new EstoqueEntity
                    {
                        QuantidadeTotal = estoqueItem.QuantidadeTotal - saidaItem.QtdTotal
                    };

                    EstoqueDao.Atualizar(estoque, saidaItem.IdItem);
                }

                MessageBox.Show("Registro gravado com sucesso!");
                this.Close();
            }
        }
        private void btnSalvarEntrada_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Deseja realmente criar um novo registro?",
                                                  "Confirma a criação ", MessageBoxButtons.YesNo,
                                                  MessageBoxIcon.Question);
            if (result == DialogResult.Yes)
            {
                MovimentoEntradaEntity entrada = new MovimentoEntradaEntity();
                IList<MovimentoEntradaItemEntity> itens = new List<MovimentoEntradaItemEntity>();

                entrada.IdFornecedor = _fornecedorSelecionado;
                entrada.DataMovimento = DateTime.Now;

                entrada.IdUsuario = Properties.Settings.Default.IdUsuarioLogado;

                foreach (DataGridViewRow row in dtgridItensSelecionados.Rows)
                {
                    if (row.Cells["CodigoItem"].Value != null && row.Cells["CodigoItem"].Value.ToString() != "")
                    {
                        if (row.Cells["Quantidade"].Value == null)
                        {
                            MessageBox.Show("Preencha a quantidade para o item " + row.Cells["ItemId"].Value + " - " + row.Cells["ItemName"].Value, "Campo Inválido");
                            return;
                        }

                        IItemEntity item = ItemDao.ConsultarPorCodigo(Convert.ToInt32(row.Cells["CodigoItem"].Value));
                        MovimentoEntradaItemEntity entradaItem = new MovimentoEntradaItemEntity();

                        entradaItem.IdItem = item.IdItem;
                        entradaItem.IdDeposito = Convert.ToInt32(row.Cells["Deposito"].Value);
                        entradaItem.QtdTotal = Convert.ToInt32(row.Cells["Quantidade"].Value);

                        itens.Add(entradaItem);
                    }
                }

                entrada.IdMovimentacaoEntrada = MovimentoEntradaDao.Inserir(entrada);

                foreach (var entradaItem in itens)
                {
                    entradaItem.IdMovimentoEntrada = entrada.IdMovimentacaoEntrada;

                    MovimentoEntradaItemEntity movimento = new MovimentoEntradaItemEntity
                    {
                        IdMovimentoEntrada = entradaItem.IdMovimentoEntrada,
                        IdItem = entradaItem.IdItem,
                        IdDeposito = entradaItem.IdDeposito,
                        QtdTotal = entradaItem.QtdTotal
                    };
                    MovimentoEntradaItemDao.Inserir(movimento);



                    EstoqueEntity estoque = new EstoqueEntity
                    {
                        IdItem = entradaItem.IdItem,
                        QuantidadeTotal = entradaItem.QtdTotal,
                        QuantidadeUtilizada = 0
                    };

                    IEstoqueEntity estoqueItem = EstoqueDao.ConsultarPorCodigoItem(entradaItem.IdItem);

                    if (estoqueItem != null)
                    {
                        EstoqueEntity atualizarEstoque = new EstoqueEntity
                        {
                          IdItem = entradaItem.IdItem,
                          QuantidadeTotal = entradaItem.QtdTotal + estoqueItem.QuantidadeTotal,
                          QuantidadeUtilizada = 0
                        };
                        EstoqueDao.Atualizar(atualizarEstoque, entradaItem.IdItem);
                    }
                    else
                    {
                        EstoqueDao.Incluir(estoque);
                    }
                }

                MessageBox.Show("Registro gravado com sucesso!");
                this.Close();
            }
        }