ayuda con codigo venta facturacion en vb 6.0
Publicado por luchomansito (19 intervenciones) el 17/04/2012 01:24:24
Amigos necesito colaboracion con un detalle que encontre en el proceso de facturacion que realize gracias a un videotutorial por internet , todo funciona bien excepto un problemita y es que cuando realizo una venta y quiero realizar otra venta nueva sin salir del programa , me genera un error y es que en el subtotal me adiciona el valor de la venta anterior, les agradesco su colaboracion , le agrege un descuento en el programa.
primero se adiciona los productos y se calculan los totales con este codigo:
Private Sub agregarproducto_Click()
''Agregar productos
If Val(cantidadproducto.Text) = 0 Then MsgBox "ingrese cantidad del producto", vbInformation, "Aviso": cantidadproducto.SetFocus: Exit Sub
'validar eleccion de productos de la lista
If labelcodigoproducto.Caption = "" Then MsgBox "debe elegir producto", vbInformation, "Aviso": Exit Sub
' validar que la cantidad a vender sea menor que la cantidad de stock o existencias del producto
If Val(cantidadproducto.Text) > Val(cantidad.Text) Then MsgBox "no existen esa cantidad de productos", vbInformation, "Aviso": cantidadproducto.SetFocus: Exit Sub
'' validar que el producto exista en las existencias o al detalle
With Rstemporalfactura
.Requery
.Find "codigoproducto='" & Val(labelcodigoproducto.Caption) & "'"
If .EOF Then Else MsgBox "este producto ya ha sido agregado a la compra", vbInformation, "Aviso": Exit Sub
End With
formatogrillatemporalfactura
''''' GRABAR EN TABLA TEMPORAL
With Rstemporalfactura
.Requery
.AddNew
!codventafactura = lblnumerofactura.Caption
!codigoproducto = (labelcodigoproducto.Caption)
!producto = producto.Text
!cantidad = Val(cantidadproducto.Text)
!precio = CDbl(precio.Text)
!importe = Val(cantidadproducto.Text) * CDbl(precio.Text)
.Update
End With
formatogrillatemporalfactura
''' CALCULAR TOTALES---------------------
xsubtotal = xsubtotal + (Val(cantidadproducto.Text) * CDbl(precio.Text))
subtotal.Text = xsubtotal
igv.Text = xsubtotal * 0
'totalvender.Text = xsubtotal + (xsubtotal * 0)
End Sub
aqui el codigo.
se factura y realiza la venta con este codigo.
Private Sub vender_Click()
With Rsconfigurarfactura
.Requery
.MoveFirst
!numerofacturas = Val(lblnumerofactura) + 1
.UpdateBatch
End With
'' validar que se eligio un cliente
If lblcodigocliente.Caption = "" Then MsgBox "Debe elegir un cliente de la lista", vbInformation, "Aviso": Exit Sub
''validar que por lo menos se halla elegido un producto en detalle temporal
With Rstemporalfactura
.Requery
If .BOF Or .EOF Then MsgBox "no se ha ingresado ningun producto a detalle", vbInformation, "aviso": formatogrillatemporalfactura: Exit Sub Else formatogrillatemporalfactura
End With
If descuento.Text = "" Then MsgBox "agregue un valor al descuento", vbInformation, "Aviso": Exit Sub
'agregar a la venta y facturar
With Rsventafactura
.Requery
.AddNew
!codigofactura = lblnumerofactura
!fechaventa = Date
!codigocliente = Val(lblcodigocliente.Caption)
!subtotal = xsubtotal
!IVA = xsubtotal * 0
!descuento = descuento.Text
!total = xsubtotal + ((xsubtotal * 0) - Val(descuento.Text))
.Update
totalvender.Text = xsubtotal + ((xsubtotal * 0) - Val(descuento.Text))
End With
'' agregar detalles de venta
Dim registros As Integer
registros = Rstemporalfactura.RecordCount
Rstemporalfactura.Requery
Rstemporalfactura.MoveFirst
For X = 1 To registros
With Rsdetallefactura
.Requery
.AddNew
!codventafactura = grillaventa.Columns(1).Text
!codigoproducto = grillaventa.Columns(2).Text
!cantidad = grillaventa.Columns(4).Text
!precio = grillaventa.Columns(5).Text
!importe = grillaventa.Columns(6).Text
.Update
End With
If X = registros Then Else Rstemporalfactura.MoveNext
Next
'' enviar mensaje de confirmacion la venta se ha generado correctamente
MsgBox " la venta se ha generado y facturado correctamente", vbInformation, "Aviso"
Dim CantidadVendida As Integer, i As Integer
' For i = 0 To grillaventa.ApproxCount - 1
' grillaventa.Row = i
' CantidadVendida = grillaventa.Columns(4)
' bases.Execute "Update productos set cantidad=cantidad - " & CantidadVendida & "WHERE codigoproducto=" & grillaventa.Columns(2)
' Next i
'''' borrar el temporalfactura
borrartemporalfactura
'''''salir
Unload Me
End Sub
parece que el detalle del asunto esta aqui pero no se como resolverlo.
la variable xsubtotal de mi codigo (subtotal en el video tutorial), se sigue ejecutando aun cuando salgo del formulario de ventas al formulario principal,pues cuando ingreso otra vez al formulario de ventas para realizar una nueva venta me sigue acumulando cantidades,la unica forma en que esto no suceda es que salga de la aplicacion y la ejecute nuevamente y eso es incomodo para el que maneja la aplicacion, que solucion me pueden dar a esto para que cuando ejecute una nueva venta sin salir del programa no me acumule cantidades de las ventas pasadas.
la variable esta declarada en un modulo .
gracias y les agradesco cualquier ayuda a esta inquietud.
les agradesco mucho su colaboracion.
primero se adiciona los productos y se calculan los totales con este codigo:
Private Sub agregarproducto_Click()
''Agregar productos
If Val(cantidadproducto.Text) = 0 Then MsgBox "ingrese cantidad del producto", vbInformation, "Aviso": cantidadproducto.SetFocus: Exit Sub
'validar eleccion de productos de la lista
If labelcodigoproducto.Caption = "" Then MsgBox "debe elegir producto", vbInformation, "Aviso": Exit Sub
' validar que la cantidad a vender sea menor que la cantidad de stock o existencias del producto
If Val(cantidadproducto.Text) > Val(cantidad.Text) Then MsgBox "no existen esa cantidad de productos", vbInformation, "Aviso": cantidadproducto.SetFocus: Exit Sub
'' validar que el producto exista en las existencias o al detalle
With Rstemporalfactura
.Requery
.Find "codigoproducto='" & Val(labelcodigoproducto.Caption) & "'"
If .EOF Then Else MsgBox "este producto ya ha sido agregado a la compra", vbInformation, "Aviso": Exit Sub
End With
formatogrillatemporalfactura
''''' GRABAR EN TABLA TEMPORAL
With Rstemporalfactura
.Requery
.AddNew
!codventafactura = lblnumerofactura.Caption
!codigoproducto = (labelcodigoproducto.Caption)
!producto = producto.Text
!cantidad = Val(cantidadproducto.Text)
!precio = CDbl(precio.Text)
!importe = Val(cantidadproducto.Text) * CDbl(precio.Text)
.Update
End With
formatogrillatemporalfactura
''' CALCULAR TOTALES---------------------
xsubtotal = xsubtotal + (Val(cantidadproducto.Text) * CDbl(precio.Text))
subtotal.Text = xsubtotal
igv.Text = xsubtotal * 0
'totalvender.Text = xsubtotal + (xsubtotal * 0)
End Sub
aqui el codigo.
se factura y realiza la venta con este codigo.
Private Sub vender_Click()
With Rsconfigurarfactura
.Requery
.MoveFirst
!numerofacturas = Val(lblnumerofactura) + 1
.UpdateBatch
End With
'' validar que se eligio un cliente
If lblcodigocliente.Caption = "" Then MsgBox "Debe elegir un cliente de la lista", vbInformation, "Aviso": Exit Sub
''validar que por lo menos se halla elegido un producto en detalle temporal
With Rstemporalfactura
.Requery
If .BOF Or .EOF Then MsgBox "no se ha ingresado ningun producto a detalle", vbInformation, "aviso": formatogrillatemporalfactura: Exit Sub Else formatogrillatemporalfactura
End With
If descuento.Text = "" Then MsgBox "agregue un valor al descuento", vbInformation, "Aviso": Exit Sub
'agregar a la venta y facturar
With Rsventafactura
.Requery
.AddNew
!codigofactura = lblnumerofactura
!fechaventa = Date
!codigocliente = Val(lblcodigocliente.Caption)
!subtotal = xsubtotal
!IVA = xsubtotal * 0
!descuento = descuento.Text
!total = xsubtotal + ((xsubtotal * 0) - Val(descuento.Text))
.Update
totalvender.Text = xsubtotal + ((xsubtotal * 0) - Val(descuento.Text))
End With
'' agregar detalles de venta
Dim registros As Integer
registros = Rstemporalfactura.RecordCount
Rstemporalfactura.Requery
Rstemporalfactura.MoveFirst
For X = 1 To registros
With Rsdetallefactura
.Requery
.AddNew
!codventafactura = grillaventa.Columns(1).Text
!codigoproducto = grillaventa.Columns(2).Text
!cantidad = grillaventa.Columns(4).Text
!precio = grillaventa.Columns(5).Text
!importe = grillaventa.Columns(6).Text
.Update
End With
If X = registros Then Else Rstemporalfactura.MoveNext
Next
'' enviar mensaje de confirmacion la venta se ha generado correctamente
MsgBox " la venta se ha generado y facturado correctamente", vbInformation, "Aviso"
Dim CantidadVendida As Integer, i As Integer
' For i = 0 To grillaventa.ApproxCount - 1
' grillaventa.Row = i
' CantidadVendida = grillaventa.Columns(4)
' bases.Execute "Update productos set cantidad=cantidad - " & CantidadVendida & "WHERE codigoproducto=" & grillaventa.Columns(2)
' Next i
'''' borrar el temporalfactura
borrartemporalfactura
'''''salir
Unload Me
End Sub
parece que el detalle del asunto esta aqui pero no se como resolverlo.
la variable xsubtotal de mi codigo (subtotal en el video tutorial), se sigue ejecutando aun cuando salgo del formulario de ventas al formulario principal,pues cuando ingreso otra vez al formulario de ventas para realizar una nueva venta me sigue acumulando cantidades,la unica forma en que esto no suceda es que salga de la aplicacion y la ejecute nuevamente y eso es incomodo para el que maneja la aplicacion, que solucion me pueden dar a esto para que cuando ejecute una nueva venta sin salir del programa no me acumule cantidades de las ventas pasadas.
la variable esta declarada en un modulo .
gracias y les agradesco cualquier ayuda a esta inquietud.
les agradesco mucho su colaboracion.
Valora esta pregunta


0