Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

rizuane

Inserçao de vendas na grid

Mensagens Recomendadas

rizuane

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.