Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com seguinte codigo


rizuane

Pergunta

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 , preço 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.preço = 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.preço = 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 não aceita a inclusao de mais produtos e não 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 já 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.preço * 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 são 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 alguém tiver um outro codigo que faça o mesmo, sera bem vindo.

Agradeco a ajuda desde já.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...