Formulario de ventas oO?

Iniciado por ezugaru, 23 Abril 2009, 17:27 PM

0 Miembros y 5 Visitantes están viendo este tema.

ezugaru

Hola amigos, de nuevo molestandolos ... estoy diseñado un sistema de ventas e inventarios, lo estoy haciendo en VB.Net 2005. Ya estoy controlando lo que son salidas y entradas de mercancia al almacen, al igual que las altas y bajas de clientes, lo cual pues no es dificil, mi problema ahora viene en como programo la parte de las ventas   Por ejemplo, estoy pensando en manejar un tabla de ventas que es en la que quiero registrar que articulo vendo cada vez, con su id y su descripcion, asi como el cliente que lo compro, la cantidad,fecha y un id de ventas, con lo cual si quiero checar todos los articulos de un venta especifica pues pueda hacerlo, obviamente al hacer una venta a credito voy a afrectar otra tabla que se llama creditos, en donde tengo id de mis clientes, id de venta, y el monto total de cada venta, asi como la fecha de la venta y claro, no puede faltar que afecte mi tabla de inventario pues en la cual tengo que actualizar la 'cantidad' de articulos que van a quedar,lo que estaba pensando hacer era poner un DataGridView en el formulario de ventas, y en el campo de clave que vayan tecleando o entrando la clave del articulo, la cantidad y al dar enter haga la consulta y meta los demas  datos necesarios a datagridview, ya lo que no se es cuando ya este todo en la datagridvew ejecutar la venta y de ahi se hagan todas las modificaciones a las tablas pertinentes , alguna idea? u orientación? saludos. :-X

Hadess_inf

Podrias:

* Crear un procedure para registrar la venta, en el mismo proc actualiza el stock segun ingreses un producto a la venta.

* Usar triggers para actualizar el stock del producto cuando se haga una insercion en la tabla de venta.

Recomendaria que en este caso uses la segunda opcion.
Saludos.

ezugaru

Cita de: Hadess_inf en 23 Abril 2009, 19:21 PM
Podrias:

* Crear un procedure para registrar la venta, en el mismo proc actualiza el stock segun ingreses un producto a la venta.

* Usar triggers para actualizar el stock del producto cuando se haga una insercion en la tabla de venta.

Recomendaria que en este caso uses la segunda opcion.
Saludos.

A ver, es que este es mi primer sistema de ventas asi que ando algo oscuro en el asunto xD. Con lo que me has dicho quiere decir que cada vez que ingrese un artciulo al datagrid view se hace la consulta de insercion en la tabla ventas, y eso dispara el trigger o el SP que me actualizara los demas datos en las tablas consecuentes??? Lo pregunto porque yo pensaba que primero se llenaba el datagrid y luego con todos los datos se hacia una consulta que tomara los datos de cada row y asi se iba haciendo todo, y asi si antes de efectuar la venta el cliente queria eliminar algun producto pues solo lo eliminaba del DGview, entonces si lo hago asi como dices debo hacer otro procedimiento para eliminar un articulo tanto del datagridview como de la tabla de ventas en la base de datos???

Hadess_inf

Lo que dices es correcto, pero solo una parte. Claro esta que llamaras al sp cuando des click en algun boton "VENDER" y no cuando estes en pleno llenado de la grilla (sino iamginate que puede ocurrir lo que tu comentas, y en ese caso tendrias que elaborar otro procedimiento para eliminar lo ya insertado).

ezugaru

Cita de: Hadess_inf en 24 Abril 2009, 02:25 AM
Lo que dices es correcto, pero solo una parte. Claro esta que llamaras al sp cuando des click en algun boton "VENDER" y no cuando estes en pleno llenado de la grilla (sino iamginate que puede ocurrir lo que tu comentas, y en ese caso tendrias que elaborar otro procedimiento para eliminar lo ya insertado).

Gracias Hadess ya estoy trabajando sobre eso  ;D , ahora solo necesito acostumbrame a manipular los campos del DGview para hacer las consultas jo jo jo  , no se poruqe VB se me complica tanto para manipular los controles :s

Hadess_inf

El manejo de la grilla es en realidad sencillo. Solo trabajar con rows, columns, cells o items. En todo caso cualquier consulta a este foro. Un saludo.

ezugaru

Cita de: Hadess_inf en 24 Abril 2009, 18:42 PM
El manejo de la grilla es en realidad sencillo. Solo trabajar con rows, columns, cells o items. En todo caso cualquier consulta a este foro. Un saludo.

Bueno pues abusando para no abrir otro post, mira hay algo que quiero hacer pero no encuentro como, ya he checado en la red pero solo me aparece como llenar toda la grilla con una consulta y yo no ando buscando eso, mi sistema se ve mas o menos así, es un preeliminar:


Cuando entro la clave del cliente pues ya la consulta me manda los datos a los boxes y depues el focus se va a la grilla, la cosa es que quiero que en la grilla yo pueda poner en la columna de id del producto la clave del producto y cuando le de "Enter" poder invocar un query que me haga la consulta y llene los datos faltantes como son descripcion, y precio unitario, ya que lo que es cantidad lo tecleara el usuario y ahi debe de poder hacerse la operacion para determinar el importe de cada row . .  espero explicarme >.<

Hadess_inf

Código (vbnet) [Seleccionar]
    'El evento es CellLeave, ocurre cuando quitas el foco de una celda.
    Private Sub DataGridView1_CellLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellLeave
        If e.ColumnIndex = 1 Then 'si el indice de la columna es 0 = significa que estas en la columna del id
            'aqui empieza el codigo para establecer el valor en las demas celdas
            Dim ind As Integer = e.RowIndex
            Me.DataGridView1.Item(ind, 1).Value = "valor" '1 es el indice de la columna.varia segun tu caso
            Me.DataGridView1.Item(ind, 2).Value = "valor" '2 es el indice de la columna.varia segun tu caso
        End If
    End Sub


Espero sirva. Cualquier duda que tengas, solo avisanos.
Un saludo.

ezugaru

Hola Hadess_inf muchas gracias por el dato ya estoy trabajando sobre eso y ya casi lo tengo, solo tengo un problema, por alguna razon no puedo obtener el valor de la celda donde introduzco la clave, no se si es porque el Sub es de tipo CellLeave y no de Click o Content . . te pondre mi código par que lo veas:



Private Sub venta_dgv_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles venta_dgv.CellLeave

        If e.ColumnIndex = 0 Then

            Dim ind As Integer = e.RowIndex

            fila = venta_dgv.Item(0, ind).Value

            con = New MySqlConnection
            con.ConnectionString = "server = 192.168.1.151;" & "user = root;" & "password = 18281e78a8;" & "database = rocar;"

            Try

                con.Open()
                consulta = "select id_prd from inventario where id_prd ='" & fila & "'"
                comando.Connection = con
                comando.CommandText = consulta
                adaptador.SelectCommand = comando

                If adaptador.Fill(datos) = Nothing Then

                    MsgBox("Clave no encontrada, verificala, clave introducida:" & fila)
                    id_cte.Text = Nothing
                    venta_dgv.Focus()

                Else

                    consulta2 = "select descripcion,p_vta from inventario where id_prd='" & fila & "'"
                    comando.Connection = con
                    comando.CommandText = consulta2
                    lector = comando.ExecuteReader

                    ' While
                    lector.Read()
                    Me.venta_dgv.Item(2, ind).Value = lector(0).ToString()
                    Me.venta_dgv.Item(3, ind).Value = lector(1).ToString()
                    'Me.venta_dgv.Item(4, ind).Value = resulta

                    'End While

                End If

            Catch ex As Exception

                MsgBox("Se produjo el siguiente error: " & ex.Message)

            End Try

            con.Dispose()

        End If

           

            ' Else

            '    MsgBox(" Campo equivocado, por favor usa el campo CLAVE.")

    End Sub
End Class



Ya intente poniendo el valor de fila directo con la clave de un producto existente, y si funciona, pero poir alguna razon cuando lo ejecuto asi como lo tengo me manda una cadena vacia, y si le agrego el .tostring al final de cuando le paso a "fila" el valor del campo me manda un error que dice: Excepción no controlada del tipo 'System.NullReferenceException' en Rocar Sys 0.1b.exe

Información adicional: Object reference not set to an instance of an object.

Asi que la neta ya le anduve buscando y no entiendo, creo que soy muy lelo para esto :(

ezugaru

Ya lo pude obtener, use este codigo:



clave_prd = Me.venta_dgv.CurrentCell.GetEditedFormattedValue(0, Me.venta_dgv.CurrentRow.Index)



Ahora solo hay un detallito molesto, cuando cambio de de fila, me sale el mensaje de que la clave no existye, me imagino que por alguna razon en algun lado manda cadena vacia. .  lo checare con calma, pero ahi si tienen alguna observacion se las agradezco.