public IMovimentoSaidaEntity Bind(DataRow source)
            {
                IMovimentoSaidaEntity saida = new MovimentoSaidaEntity();

                saida.IdMovimentoSaida = Convert.ToInt32(source["IdMovimentoSaida"]);
                saida.IdUsuario        = Convert.ToInt32(source["IdUsuario"]);
                saida.IdCliente        = Convert.ToInt32(source["IdCliente"]);
                saida.DataMovimento    = Convert.ToDateTime(source["DataMovimento"]);
                return(saida);
            }
        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();
            }
        }