private void buttonGerarNotaFiscal_Click(object sender, EventArgs e) { NotaFiscalService service = new NotaFiscalService(); if (txtBoxNomeCliente.Text == "") // verifica nome do cliente em branco { txtBoxNomeCliente.Focus(); MessageBox.Show("Nome de cliente em branco."); return; } else { pedido.clientePedido.nomeCliente = txtBoxNomeCliente.Text; } if (!EstadoFuncs.EstadoValido(cbxEstadoOrigem.Text)) // verifica se estado é válido { cbxEstadoOrigem.Focus(); MessageBox.Show("Estado de Origem não existe ou em branco."); return; } else { pedido.EstadoOrigem.siglaEstado = cbxEstadoOrigem.Text; } if (!EstadoFuncs.EstadoValido(cbxEstadoDestino.Text)) // verifica se estado é válido { cbxEstadoDestino.Focus(); MessageBox.Show("Estado de Destino não existe ou em branco."); return; } else { pedido.EstadoDestino.siglaEstado = cbxEstadoDestino.Text; } DataTable table = (DataTable)dataGridViewPedidos.DataSource; if (table.Rows.Count == 0) // não deixa criar pedido sem itens { MessageBox.Show("Pedido sem Itens."); return; } pedido.ItensDoPedido.Clear(); // limpa os itens de pedido caso seja chamada novamente por causa de erros nos dados dos itens int linhaAtual = 0; foreach (DataRow row in table.Rows) { PedidoItem pedidoItem = new PedidoItem(); if (row["Nome do produto"].ToString() == "") // verifica se nome do produto está em branco { dataGridViewPedidos.CurrentCell = dataGridViewPedidos.Rows[linhaAtual].Cells["Nome do produto"]; MessageBox.Show("Nome do Produto em branco."); return; } else { pedidoItem.NomeProduto = row["Nome do produto"].ToString(); } if (row["Codigo do produto"].ToString() == "") // verifica se código do produto está em branco { dataGridViewPedidos.CurrentCell = dataGridViewPedidos.Rows[linhaAtual].Cells["Codigo do produto"]; MessageBox.Show("Código do Produto em branco."); return; } else { pedidoItem.CodigoProduto = row["Codigo do produto"].ToString(); } if (row["Valor"].ToString() == "") // verifica se valor do produto está em branco { dataGridViewPedidos.CurrentCell = dataGridViewPedidos.Rows[linhaAtual].Cells["Valor"]; MessageBox.Show("Valor em branco."); return; } else { double number; if (Double.TryParse(row["Valor"].ToString(), out number)) { pedidoItem.ValorItemPedido = number; } else { dataGridViewPedidos.CurrentCell = dataGridViewPedidos.Rows[linhaAtual].Cells["Valor"]; MessageBox.Show("Valor do produto é inválido."); return; } } if (row["Brinde"] == DBNull.Value) // proteção contra o DBNull quando não é selecionado nada na coluna BRINDE { pedidoItem.Brinde = false; } else { pedidoItem.Brinde = Convert.ToBoolean(row["Brinde"]); } pedido.ItensDoPedido.Add(pedidoItem); linhaAtual++; // passa para próxima linha } service.GerarNotaFiscal(pedido); if (service.SalvaNotaFiscal()) { MessageBox.Show("NF salva com sucesso"); LimpaCampos(); // item 06 - limpar campos } else { MessageBox.Show("Erro ao Salvar NF"); } }