rizuane 0 Denunciar post Postado Fevereiro 16, 2010 ola pessoal, tou muito encrencado com esse codigo de incluir as vendas de produtos numa grid para depois calcular o total das vendas. codigo onde instanciamos a classe vendas e declaramos algumas variaveis: 'Definir objeto da classe DetalhesPedidos Dim oDetalhesPedidos As detalhesPedidosDAL Dim nomeProduto As String Dim codProduto As String Dim precoProduto As Double Dim codigoCliente As String Dim estoqueProduto As Integer 'Definir una LISTA de Objetos DetalhesPedidos Dim ArrDetalhesPedidos As New List(Of detalhesPedidosDAL) 'botao incluir produtos na grid Private Sub btnIncluirProdt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIncluirProdt.Click 'atribui os valores as variáveis definidas no formulario nomeProduto = RadComboBox4.Text.ToString codProduto = lblIDprodt.Text.ToString precoProduto = Convert.ToDouble(txtPreco.Text.ToString) estoqueProduto = Convert.ToInt32(txtEstoque.Text.ToString) 'poe o foco no textbox quantidade txtQntd.Focus() 'Verificamos a quantidade foi informada If txtQntd.Text = String.Empty Then MsgBox("Informe a quantidade requerida...") txtQntd.Focus() Exit Sub End If 'Verificamos se o nome do produto , preco e quantidade não estão vazios If RadComboBox4.Text <> "" And txtPreco.Text <> "" And txtQntd.Text <> "" Then 'Verificamos se o estoque do produto não é menor do que o solicitado If Convert.ToInt32(estoqueProduto) < Convert.ToInt32(txtQntd.Text) Then 'Mostramos uma aviso ao usuário MsgBox("A quantidade requerida é Superior a do estoque") 'Como a quantidade solicitada é mario que o estoque 'perguntamos se o usuário deseja estabelecer o estoque atual 'com a nova quantidade informada If MessageBox.Show("Deseja estabelecer o estoque atual como a nova quantidade requerida", "Vendas", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then 'Establecemos a nova quantidade em estoque txtQntd.Text = estoqueProduto 'Inicializamos o objeto da classe DetalhesPedidos oDetalhesPedidos = New detalhesPedidosDAL 'Preenchemos os valores '----------------------------------------------------------------- oDetalhesPedidos.Quantidade = Convert.ToInt32(txtQntd.Text) oDetalhesPedidos.CodProduto = codProduto oDetalhesPedidos.NomeProduto = nomeProduto oDetalhesPedidos.Preco = precoProduto oDetalhesPedidos.EstoqueProduto = estoqueProduto oDetalhesPedidos.Subtotal = precoProduto * Convert.ToInt32(txtQntd.Text) '------------------------------------------------------------------------ 'Verificamos se o produto esta na lista de pedidos 'e incluimos a lista de DetalhesPedidos If buscarDetalhesVendas(ArrDetalhesPedidos, oDetalhesPedidos) = False Then 'Agregamos o pedido a lista de DetalhesPedidos ArrDetalhesPedidos.Add(oDetalhesPedidos) End If 'Assciamos a lista de DetalhesPedidos como fonte de dados ao datagridview Me.DataGridView1.DataSource = ArrDetalhesPedidos Else 'Se não deseja estabelecer o estoque atual com a quantidade solicitada 'voltamos ao formulario para escolher outro produto 'btnProcuraProduto_Click(Nothing, Nothing) End If Else 'Como a quantidade requerida e menor que o estoque 'iniciamos o objeto da classe DetalhesPedidos oDetalhesPedidos = New detalhesPedidosDAL 'Preenchemos os valores no objeto oDetalhesPedidos.Quantidade = Convert.ToInt32(txtQntd.Text) oDetalhesPedidos.CodProduto = codProduto oDetalhesPedidos.NomeProduto = nomeProduto oDetalhesPedidos.Preco = precoProduto oDetalhesPedidos.EstoqueProduto = estoqueProduto oDetalhesPedidos.Subtotal = precoProduto * Convert.ToInt32(txtQntd.Text) 'Verificamos se o produto solicitado esta na lista de pedidos 'Se não estiver incluimos na lista de DetalhesPedidos If buscarDetalhesVendas(ArrDetalhesPedidos, oDetalhesPedidos) = False Then 'Incluimos o pedido a lista de DetalhesPedidos ArrDetalhesPedidos.Add(oDetalhesPedidos) End If 'Associamos a lista como origem da fonte de dados Me.DataGridView1.DataSource = ArrDetalhesPedidos.ToList End If End If 'Limpamos os textBox Me.limpar_produto() 'Calculamos o Total do Pedido Me.calcular_total() End Sub Ele simplesmente inclui a primeiro produto na grid e depois nao aceita a inclusao de mais produtos e nao soma os subtotais na respectiva grid. O metodo usado para calcular sub total: 'metodo para calcular o total Sub calcular_total() Dim soma As Double 'calcula o valor total dos pedidos 'percorre o arrayList e soma o valor Subtotal For Each i As detalhesPedidosDAL In ArrDetalhesPedidos soma += i.Subtotal Next Me.lbtTotal.Text = soma.ToString("C") End Sub POr ultimo temos o metodo buscarDetalhesVendas: 'Funcao buscar detalhes Public Function buscarDetalhesVendas(ByVal array As List(Of detalhesPedidosDAL), ByVal objDV As detalhesPedidosDAL) As Boolean 'Vreificamos se um produto ja foi solicitado For Each oDetPed As detalhesPedidosDAL In array If oDetPed.CodProduto = objDV.CodProduto Then Dim nQuantidade As Integer 'Se encontramos o produto na lista de pedidos 'incrementamos a quantidade solicitada 'com a quantidade solicitada anteriomente nQuantidade = oDetPed.Quantidade + objDV.Quantidade If nQuantidade <= oDetPed.EstoqueProduto Then oDetPed.Quantidade = nQuantidade oDetPed.Subtotal = oDetPed.Preco * oDetPed.Quantidade Else MsgBox("O estoque atual é insuficiente para a quantidade solicitada.") End If Return True End If Next Return False End Function Necessitamos da vossa ajuda para introduzir os produtos que sao selecionados numa combo para dentro da grid. O codigo acima so aceita a inser;ao de um unico produto na grid, mas nos pretendemos inserir mais de um produto em cada venda na grid e depois somar o total de acordo com as quantidades requesitadas. Esse codigo foi estraido do site macoratti:codigo copiado do site macoratti Se alguem tiver um outro codigo que faça o mesmo, sera bem vindo. Agradeco a ajuda desde ja. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 17, 2010 O processo não é o mesmo? Quando insere o primeiro, o segundo não passa pelo mesmo local? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites